| PROGRAM FM379 |
| |
| C***********************************************************************00010379 |
| C***** FORTRAN 77 00020379 |
| C***** FM379 00030379 |
| C***** XRFOR - (201) 00040379 |
| C***** 00050379 |
| C***********************************************************************00060379 |
| C***** GENERAL PURPOSE SUBSET REF 00070379 |
| C***** TEST TRIGONOMETRIC FORMULAE 15.3 00080379 |
| C***** TABLE 5 00090379 |
| C***** 00100379 |
| CBB** ********************** BBCCOMNT **********************************00110379 |
| C**** 00120379 |
| C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00130379 |
| C**** VERSION 2.1 00140379 |
| C**** 00150379 |
| C**** 00160379 |
| C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00170379 |
| C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00180379 |
| C**** SOFTWARE STANDARDS VALIDATION GROUP 00190379 |
| C**** BUILDING 225 RM A266 00200379 |
| C**** GAITHERSBURG, MD 20899 00210379 |
| C**** 00220379 |
| C**** 00230379 |
| C**** 00240379 |
| CBE** ********************** BBCCOMNT **********************************00250379 |
| CBB** ********************** BBCINITA **********************************00260379 |
| C**** SPECIFICATION STATEMENTS 00270379 |
| C**** 00280379 |
| CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00290379 |
| 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00300379 |
| CBE** ********************** BBCINITA **********************************00310379 |
| CBB** ********************** BBCINITB **********************************00320379 |
| C**** INITIALIZE SECTION 00330379 |
| DATA ZVERS, ZVERSD, ZDATE 00340379 |
| 1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00350379 |
| DATA ZCOMPL, ZNAME, ZTAPE 00360379 |
| 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00370379 |
| DATA ZPROJ, ZTAPED, ZPROG 00380379 |
| 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00390379 |
| DATA REMRKS /' '/ 00400379 |
| C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00410379 |
| C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00420379 |
| C**** 00430379 |
| CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00440379 |
| CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00450379 |
| CZ03 ZPROG = 'PROGRAM NAME' 00460379 |
| CZ04 ZDATE = 'DATE OF TEST' 00470379 |
| CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00480379 |
| CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00490379 |
| CZ07 ZNAME = 'NAME OF USER' 00500379 |
| CZ08 ZTAPE = 'TAPE OWNER/ID' 00510379 |
| CZ09 ZTAPED = 'DATE TAPE COPIED' 00520379 |
| C 00530379 |
| IVPASS = 0 00540379 |
| IVFAIL = 0 00550379 |
| IVDELE = 0 00560379 |
| IVINSP = 0 00570379 |
| IVTOTL = 0 00580379 |
| IVTOTN = 0 00590379 |
| ICZERO = 0 00600379 |
| C 00610379 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620379 |
| I01 = 05 00630379 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640379 |
| I02 = 06 00650379 |
| C 00660379 |
| CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00670379 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00680379 |
| CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00690379 |
| C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00700379 |
| C 00710379 |
| CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00720379 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00730379 |
| CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00740379 |
| C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00750379 |
| C 00760379 |
| CBE** ********************** BBCINITB **********************************00770379 |
| NUVI = I02 00780379 |
| IVTOTL = 10 00790379 |
| ZPROG = 'FM379' 00800379 |
| CBB** ********************** BBCHED0A **********************************00810379 |
| C**** 00820379 |
| C**** WRITE REPORT TITLE 00830379 |
| C**** 00840379 |
| WRITE (I02, 90002) 00850379 |
| WRITE (I02, 90006) 00860379 |
| WRITE (I02, 90007) 00870379 |
| WRITE (I02, 90008) ZVERS, ZVERSD 00880379 |
| WRITE (I02, 90009) ZPROG, ZPROG 00890379 |
| WRITE (I02, 90010) ZDATE, ZCOMPL 00900379 |
| CBE** ********************** BBCHED0A **********************************00910379 |
| C***** 00920379 |
| C***** HEADER FOR SEGMENT 201 00930379 |
| WRITE(NUVI,20101) 00940379 |
| 20101 FORMAT(" ", / " XRFOR - (201) INTRINSIC FUNCTIONS" // 00950379 |
| 1 " TRIGONOMETRIC FORMULAE" // 00960379 |
| 2 " SUBSET REF. - 15.3" ) 00970379 |
| CBB** ********************** BBCHED0B **********************************00980379 |
| C**** WRITE DETAIL REPORT HEADERS 00990379 |
| C**** 01000379 |
| WRITE (I02,90004) 01010379 |
| WRITE (I02,90004) 01020379 |
| WRITE (I02,90013) 01030379 |
| WRITE (I02,90014) 01040379 |
| WRITE (I02,90015) IVTOTL 01050379 |
| CBE** ********************** BBCHED0B **********************************01060379 |
| C***** 01070379 |
| PIVS = 3.1415926535897932384626434 01080379 |
| C***** 01090379 |
| CT001* TEST 1 LN(EXP(X)) = 1 01100379 |
| IVTNUM = 1 01110379 |
| BVS = 17.5 01120379 |
| AVS = ALOG(EXP(1.75)) - BVS / 10.0 01130379 |
| IF (AVS + 0.50000E-04) 20010, 10010, 40010 01140379 |
| 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 01150379 |
| 10010 IVPASS = IVPASS + 1 01160379 |
| WRITE (NUVI, 80002) IVTNUM 01170379 |
| GO TO 0011 01180379 |
| 20010 IVFAIL = IVFAIL + 1 01190379 |
| RVCORR = 0.0000 01200379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01210379 |
| 0011 CONTINUE 01220379 |
| CT002* TEST 2 SIN**2 + COS**2 = 1 01230379 |
| IVTNUM = 2 01240379 |
| BVS = 10.0 / 4.0 01250379 |
| CVS = SIN(BVS) ** 2 01260379 |
| DVS = COS(BVS) ** 2 01270379 |
| AVS = CVS + DVS - 1.0 01280379 |
| IF (AVS + 0.50000E-04) 20020, 10020, 40020 01290379 |
| 40020 IF (AVS - 0.50000E-04) 10020, 10020, 20020 01300379 |
| 10020 IVPASS = IVPASS + 1 01310379 |
| WRITE (NUVI, 80002) IVTNUM 01320379 |
| GO TO 0021 01330379 |
| 20020 IVFAIL = IVFAIL + 1 01340379 |
| RVCORR = 0.0000 01350379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01360379 |
| 0021 CONTINUE 01370379 |
| CT003* TEST 3 SIN(2X) = 2*SIN(X)*COS(X) 01380379 |
| IVTNUM = 3 01390379 |
| BVS = 8.5 01400379 |
| CVS = BVS * (-0.5) 01410379 |
| AVS = (SIN(-4.25) * COS(CVS)) * 2.0 - SIN(-8.5) 01420379 |
| IF (AVS + 0.50000E-04) 20030, 10030, 40030 01430379 |
| 40030 IF (AVS - 0.50000E-04) 10030, 10030, 20030 01440379 |
| 10030 IVPASS = IVPASS + 1 01450379 |
| WRITE (NUVI, 80002) IVTNUM 01460379 |
| GO TO 0031 01470379 |
| 20030 IVFAIL = IVFAIL + 1 01480379 |
| RVCORR = 0.0000 01490379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01500379 |
| 0031 CONTINUE 01510379 |
| CT004* TEST 4 ARCSIN(X) = ARCCOS(1-X**2) 01520379 |
| IVTNUM = 4 01530379 |
| AVS = ASIN(-0.875) + ACOS(SQRT(1.0 - (0.875) ** 2)) 01540379 |
| IF (AVS + 0.50000E-04) 20040, 10040, 40040 01550379 |
| 40040 IF (AVS - 0.50000E-04) 10040, 10040, 20040 01560379 |
| 10040 IVPASS = IVPASS + 1 01570379 |
| WRITE (NUVI, 80002) IVTNUM 01580379 |
| GO TO 0041 01590379 |
| 20040 IVFAIL = IVFAIL + 1 01600379 |
| RVCORR = 0.0000 01610379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01620379 |
| 0041 CONTINUE 01630379 |
| CT005* TEST 5 TAN(X)**2 - 1 = -COS(2X)/COS(X)**2 01640379 |
| IVTNUM = 5 01650379 |
| BVS = 7.0 01660379 |
| AVS = COS(1.75) / COS(BVS / 8.0) ** 2 + TAN(0.875) ** 2 - 01670379 |
| 1 1 01680379 |
| IF (AVS + 0.50000E-04) 20050, 10050, 40050 01690379 |
| 40050 IF (AVS - 0.50000E-04) 10050, 10050, 20050 01700379 |
| 10050 IVPASS = IVPASS + 1 01710379 |
| WRITE (NUVI, 80002) IVTNUM 01720379 |
| GO TO 0051 01730379 |
| 20050 IVFAIL = IVFAIL + 1 01740379 |
| RVCORR = 0.0000 01750379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01760379 |
| 0051 CONTINUE 01770379 |
| CT006* TEST 6 ATAN(X/Y) = ATAN2(X,Y), Y > 0 01780379 |
| IVTNUM = 6 01790379 |
| BVS = 12.0 01800379 |
| CVS = ATAN2(BVS / 4.0, BVS / 3.0) 01810379 |
| AVS = CVS - ATAN(0.75) 01820379 |
| IF (AVS + 0.50000E-04) 20060, 10060, 40060 01830379 |
| 40060 IF (AVS - 0.50000E-04) 10060, 10060, 20060 01840379 |
| 10060 IVPASS = IVPASS + 1 01850379 |
| WRITE (NUVI, 80002) IVTNUM 01860379 |
| GO TO 0061 01870379 |
| 20060 IVFAIL = IVFAIL + 1 01880379 |
| RVCORR = 0.0000 01890379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01900379 |
| 0061 CONTINUE 01910379 |
| CT007* TEST 7 SQRT(X)**2 = X 01920379 |
| IVTNUM = 7 01930379 |
| AVS = SQRT(9.125) ** 2 - 9.125 01940379 |
| IF (AVS + 0.50000E-04) 20070, 10070, 40070 01950379 |
| 40070 IF (AVS - 0.50000E-04) 10070, 10070, 20070 01960379 |
| 10070 IVPASS = IVPASS + 1 01970379 |
| WRITE (NUVI, 80002) IVTNUM 01980379 |
| GO TO 0071 01990379 |
| 20070 IVFAIL = IVFAIL + 1 02000379 |
| RVCORR = 0.0000 02010379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02020379 |
| 0071 CONTINUE 02030379 |
| CT008* TEST 8 LN(X) = LN(10) * LOG10(X) 02040379 |
| IVTNUM = 8 02050379 |
| BVS = 62.5 / 1000.0 02060379 |
| AVS = ALOG10(BVS) * ALOG(10.0) - ALOG(0.0625) 02070379 |
| IF (AVS + 0.50000E-04) 20080, 10080, 40080 02080379 |
| 40080 IF (AVS - 0.50000E-04) 10080, 10080, 20080 02090379 |
| 10080 IVPASS = IVPASS + 1 02100379 |
| WRITE (NUVI, 80002) IVTNUM 02110379 |
| GO TO 0081 02120379 |
| 20080 IVFAIL = IVFAIL + 1 02130379 |
| RVCORR = 0.0000 02140379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02150379 |
| 0081 CONTINUE 02160379 |
| CT009* TEST 9 COSH**2 - SINH**2 = 1 02170379 |
| IVTNUM = 9 02180379 |
| BVS = 0.125 02190379 |
| CVS = SINH(2.125) 02200379 |
| DVS = COSH(2.0 + BVS) 02210379 |
| AVS = DVS ** 2 - CVS ** 2 - COSH(0.0) 02220379 |
| IF (AVS + 0.50000E-04) 20090, 10090, 40090 02230379 |
| 40090 IF (AVS - 0.50000E-04) 10090, 10090, 20090 02240379 |
| 10090 IVPASS = IVPASS + 1 02250379 |
| WRITE (NUVI, 80002) IVTNUM 02260379 |
| GO TO 0091 02270379 |
| 20090 IVFAIL = IVFAIL + 1 02280379 |
| RVCORR = 0.0000 02290379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02300379 |
| 0091 CONTINUE 02310379 |
| CT010* TEST 10 TANH(X) = 1 - 2/(EXP(2X)+1) 02320379 |
| IVTNUM = 10 02330379 |
| BVS = 5.0 02340379 |
| CVS = 2.0 02350379 |
| DVS = ALOG10(BVS * CVS) - SQRT(4.0) / 02360379 |
| 1 (EXP(2.0 * (BVS - CVS)) + COS(0.0)) 02370379 |
| AVS = DVS - TANH(3.0) 02380379 |
| IF (AVS + 0.50000E-04) 20100, 10100, 40100 02390379 |
| 40100 IF (AVS - 0.50000E-04) 10100, 10100, 20100 02400379 |
| 10100 IVPASS = IVPASS + 1 02410379 |
| WRITE (NUVI, 80002) IVTNUM 02420379 |
| GO TO 0101 02430379 |
| 20100 IVFAIL = IVFAIL + 1 02440379 |
| RVCORR = 0.0000 02450379 |
| WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02460379 |
| 0101 CONTINUE 02470379 |
| C***** 02480379 |
| CBB** ********************** BBCSUM0 **********************************02490379 |
| C**** WRITE OUT TEST SUMMARY 02500379 |
| C**** 02510379 |
| IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02520379 |
| WRITE (I02, 90004) 02530379 |
| WRITE (I02, 90014) 02540379 |
| WRITE (I02, 90004) 02550379 |
| WRITE (I02, 90020) IVPASS 02560379 |
| WRITE (I02, 90022) IVFAIL 02570379 |
| WRITE (I02, 90024) IVDELE 02580379 |
| WRITE (I02, 90026) IVINSP 02590379 |
| WRITE (I02, 90028) IVTOTN, IVTOTL 02600379 |
| CBE** ********************** BBCSUM0 **********************************02610379 |
| CBB** ********************** BBCFOOT0 **********************************02620379 |
| C**** WRITE OUT REPORT FOOTINGS 02630379 |
| C**** 02640379 |
| WRITE (I02,90016) ZPROG, ZPROG 02650379 |
| WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 02660379 |
| WRITE (I02,90019) 02670379 |
| CBE** ********************** BBCFOOT0 **********************************02680379 |
| CBB** ********************** BBCFMT0A **********************************02690379 |
| C**** FORMATS FOR TEST DETAIL LINES 02700379 |
| C**** 02710379 |
| 80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 02720379 |
| 80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 02730379 |
| 80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 02740379 |
| 80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 02750379 |
| 80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 02760379 |
| 1I6,/," ",15X,"CORRECT= " ,I6) 02770379 |
| 80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02780379 |
| 1E12.5,/," ",16X,"CORRECT= " ,E12.5) 02790379 |
| 80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02800379 |
| 1A21,/," ",16X,"CORRECT= " ,A21) 02810379 |
| 80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 02820379 |
| 80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 02830379 |
| 80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 02840379 |
| 80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 02850379 |
| 80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 02860379 |
| 80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 02870379 |
| 80050 FORMAT (" ",48X,A31) 02880379 |
| CBE** ********************** BBCFMT0A **********************************02890379 |
| CBB** ********************** BBCFMT0B **********************************02900379 |
| C**** FORMAT STATEMENTS FOR PAGE HEADERS 02910379 |
| C**** 02920379 |
| 90002 FORMAT ("1") 02930379 |
| 90004 FORMAT (" ") 02940379 |
| 90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )02950379 |
| 90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 02960379 |
| 90008 FORMAT (" ",21X,A13,A17) 02970379 |
| 90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 02980379 |
| 90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 02990379 |
| 90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03000379 |
| 1 7X,"REMARKS",24X) 03010379 |
| 90014 FORMAT (" ","----------------------------------------------" , 03020379 |
| 1 "---------------------------------" ) 03030379 |
| 90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03040379 |
| C**** 03050379 |
| C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03060379 |
| C**** 03070379 |
| 90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03080379 |
| 90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03090379 |
| 1 A13) 03100379 |
| 90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03110379 |
| C**** 03120379 |
| C**** FORMAT STATEMENTS FOR RUN SUMMARY 03130379 |
| C**** 03140379 |
| 90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03150379 |
| 90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03160379 |
| 90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03170379 |
| 90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03180379 |
| 90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03190379 |
| CBE** ********************** BBCFMT0B **********************************03200379 |
| C***** 03210379 |
| C***** END OF TEST SEGMENT 201 03220379 |
| STOP 03230379 |
| END 03240379 |
| 03250379 |