PROGRAM FM827 C***********************************************************************00010827 C***** FORTRAN 77 00020827 C***** FM827 00030827 C***** YDFOR - (202) 00040827 C***** 00050827 C***********************************************************************00060827 C***** GENERAL PURPOSE ANS REF 00070827 C***** TEST DOUBLE PRECISION TRIGONOMETRIC FORMULA 15.3 00080827 C***** TABLE 5 00090827 CBB** ********************** BBCCOMNT **********************************00100827 C**** 00110827 C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00120827 C**** VERSION 2.1 00130827 C**** 00140827 C**** 00150827 C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00160827 C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00170827 C**** SOFTWARE STANDARDS VALIDATION GROUP 00180827 C**** BUILDING 225 RM A266 00190827 C**** GAITHERSBURG, MD 20899 00200827 C**** 00210827 C**** 00220827 C**** 00230827 CBE** ********************** BBCCOMNT **********************************00240827 C***** 00250827 C***** S P E C I F I C A T I O N S SEGMENT 202 00260827 DOUBLE PRECISION AVD, BVD, CVD, DVD, PIVD, DVCORR 00270827 C***** 00280827 CBB** ********************** BBCINITA **********************************00290827 C**** SPECIFICATION STATEMENTS 00300827 C**** 00310827 CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00320827 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00330827 CBE** ********************** BBCINITA **********************************00340827 CBB** ********************** BBCINITB **********************************00350827 C**** INITIALIZE SECTION 00360827 DATA ZVERS, ZVERSD, ZDATE 00370827 1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00380827 DATA ZCOMPL, ZNAME, ZTAPE 00390827 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00400827 DATA ZPROJ, ZTAPED, ZPROG 00410827 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00420827 DATA REMRKS /' '/ 00430827 C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00440827 C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00450827 C**** 00460827 CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00470827 CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00480827 CZ03 ZPROG = 'PROGRAM NAME' 00490827 CZ04 ZDATE = 'DATE OF TEST' 00500827 CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00510827 CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00520827 CZ07 ZNAME = 'NAME OF USER' 00530827 CZ08 ZTAPE = 'TAPE OWNER/ID' 00540827 CZ09 ZTAPED = 'DATE TAPE COPIED' 00550827 C 00560827 IVPASS = 0 00570827 IVFAIL = 0 00580827 IVDELE = 0 00590827 IVINSP = 0 00600827 IVTOTL = 0 00610827 IVTOTN = 0 00620827 ICZERO = 0 00630827 C 00640827 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00650827 I01 = 05 00660827 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00670827 I02 = 06 00680827 C 00690827 CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00700827 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00710827 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00720827 C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00730827 C 00740827 CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00750827 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00760827 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00770827 C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00780827 C 00790827 CBE** ********************** BBCINITB **********************************00800827 NUVI = I02 00810827 IVTOTL = 10 00820827 ZPROG = 'FM827' 00830827 CBB** ********************** BBCHED0A **********************************00840827 C**** 00850827 C**** WRITE REPORT TITLE 00860827 C**** 00870827 WRITE (I02, 90002) 00880827 WRITE (I02, 90006) 00890827 WRITE (I02, 90007) 00900827 WRITE (I02, 90008) ZVERS, ZVERSD 00910827 WRITE (I02, 90009) ZPROG, ZPROG 00920827 WRITE (I02, 90010) ZDATE, ZCOMPL 00930827 CBE** ********************** BBCHED0A **********************************00940827 C***** 00950827 C***** HEADER FOR SEGMENT 202 00960827 WRITE(NUVI,20200) 00970827 20200 FORMAT(" ", / " YDFOR - (202) INTRINSIC FUNCTIONS" // 00980827 1 " DOUBLE PRECISION TRIGONOMETRIC FORMULAE" // 00990827 2 " ANS REF. - 15.3" ) 01000827 CBB** ********************** BBCHED0B **********************************01010827 C**** WRITE DETAIL REPORT HEADERS 01020827 C**** 01030827 WRITE (I02,90004) 01040827 WRITE (I02,90004) 01050827 WRITE (I02,90013) 01060827 WRITE (I02,90014) 01070827 WRITE (I02,90015) IVTOTL 01080827 CBE** ********************** BBCHED0B **********************************01090827 C***** 01100827 PIVD = 3.1415926535897932384626434D0 01110827 C***** 01120827 CT001* TEST 1 LN(EXP(X)) = X 01130827 IVTNUM = 1 01140827 BVD = 17.5D0 01150827 AVD = DLOG(DEXP(1.75D0)) - BVD / 10.0D0 01160827 IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 01170827 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 01180827 10010 IVPASS = IVPASS + 1 01190827 WRITE (NUVI, 80002) IVTNUM 01200827 GO TO 0011 01210827 20010 IVFAIL = IVFAIL + 1 01220827 DVCORR = 0.0D+00 01230827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 01240827 0011 CONTINUE 01250827 CT002* TEST 2 SIN**2 + COS**2 = 1 01260827 IVTNUM = 2 01270827 BVD = 10.0D0 / 4.0D0 01280827 CVD = DSIN(BVD) ** 2 01290827 DVD = DCOS(BVD) ** 2 01300827 AVD = CVD + DVD - 1.0D0 01310827 IF (AVD + 0.5000000000D-09) 20020, 10020, 40020 01320827 40020 IF (AVD - 0.5000000000D-09) 10020, 10020, 20020 01330827 10020 IVPASS = IVPASS + 1 01340827 WRITE (NUVI, 80002) IVTNUM 01350827 GO TO 0021 01360827 20020 IVFAIL = IVFAIL + 1 01370827 DVCORR = 0.0D+00 01380827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 01390827 0021 CONTINUE 01400827 CT003* TEST 3 SIN(2X) = 2*SIN(X)*COS(X) 01410827 IVTNUM = 3 01420827 BVD = 8.5D0 01430827 CVD = BVD * (-0.5D0) 01440827 AVD = (DSIN(-4.25D0) * DCOS(CVD)) * 2.0D0 - DSIN(-8.5D0) 01450827 IF (AVD + 0.5000000000D-09) 20030, 10030, 40030 01460827 40030 IF (AVD - 0.5000000000D-09) 10030, 10030, 20030 01470827 10030 IVPASS = IVPASS + 1 01480827 WRITE (NUVI, 80002) IVTNUM 01490827 GO TO 0031 01500827 20030 IVFAIL = IVFAIL + 1 01510827 DVCORR = 0.0D+00 01520827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 01530827 0031 CONTINUE 01540827 CT004* TEST 4 ARCSIN(X) = ARCCOS(1 - X**2) 01550827 IVTNUM = 4 01560827 AVD = DASIN(-0.875D0) + DACOS(DSQRT(1.0D0 - (0.875D0) ** 2)) 01570827 IF (AVD + 0.5000000000D-09) 20040, 10040, 40040 01580827 40040 IF (AVD - 0.5000000000D-09) 10040, 10040, 20040 01590827 10040 IVPASS = IVPASS + 1 01600827 WRITE (NUVI, 80002) IVTNUM 01610827 GO TO 0041 01620827 20040 IVFAIL = IVFAIL + 1 01630827 DVCORR = 0.0D+00 01640827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 01650827 0041 CONTINUE 01660827 CT005* TEST 5 TAN(X)**2 - 1 = -COS(2X)/COS(X)**2 01670827 IVTNUM = 5 01680827 BVD = 7.0D0 01690827 AVD = DCOS(1.75D0) / DCOS(BVD / 8.0D0) ** 2 01700827 1 + DTAN(0.875D0) ** 2 - 1.0D0 01710827 IF (AVD + 0.5000000000D-09) 20050, 10050, 40050 01720827 40050 IF (AVD - 0.5000000000D-09) 10050, 10050, 20050 01730827 10050 IVPASS = IVPASS + 1 01740827 WRITE (NUVI, 80002) IVTNUM 01750827 GO TO 0051 01760827 20050 IVFAIL = IVFAIL + 1 01770827 DVCORR = 0.0D+00 01780827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 01790827 0051 CONTINUE 01800827 CT006* TEST 6 ATAN(X/Y) = ATAN2(X,Y), Y>0 01810827 IVTNUM = 6 01820827 BVD = 12.0D0 01830827 CVD = DATAN2(BVD / 4.0D0, BVD / 3.0D0) 01840827 AVD = CVD - DATAN(0.75D0) 01850827 IF (AVD + 0.5000000000D-09) 20060, 10060, 40060 01860827 40060 IF (AVD - 0.5000000000D-09) 10060, 10060, 20060 01870827 10060 IVPASS = IVPASS + 1 01880827 WRITE (NUVI, 80002) IVTNUM 01890827 GO TO 0061 01900827 20060 IVFAIL = IVFAIL + 1 01910827 DVCORR = 0.0D+00 01920827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 01930827 0061 CONTINUE 01940827 CT007* TEST 7 SQRT(X)**2 = X 01950827 IVTNUM = 7 01960827 AVD = DSQRT(9.125D0) ** 2 - 9.125D0 01970827 IF (AVD + 0.5000000000D-09) 20070, 10070, 40070 01980827 40070 IF (AVD - 0.5000000000D-09) 10070, 10070, 20070 01990827 10070 IVPASS = IVPASS + 1 02000827 WRITE (NUVI, 80002) IVTNUM 02010827 GO TO 0071 02020827 20070 IVFAIL = IVFAIL + 1 02030827 DVCORR = 0.0D+00 02040827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 02050827 0071 CONTINUE 02060827 CT008* TEST 8 LN(X) = LN(10) * LOG10(X) 02070827 IVTNUM = 8 02080827 BVD = 62.5D0 / 1000.0D0 02090827 AVD = DLOG10(BVD) * DLOG(10.0D0) - DLOG(0.0625D0) 02100827 IF (AVD + 0.5000000000D-09) 20080, 10080, 40080 02110827 40080 IF (AVD - 0.5000000000D-09) 10080, 10080, 20080 02120827 10080 IVPASS = IVPASS + 1 02130827 WRITE (NUVI, 80002) IVTNUM 02140827 GO TO 0081 02150827 20080 IVFAIL = IVFAIL + 1 02160827 DVCORR = 0.0D+00 02170827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 02180827 0081 CONTINUE 02190827 CT009* TEST 9 COSH**2 - SINH**2 = 1 02200827 IVTNUM = 9 02210827 BVD = 0.125D0 02220827 CVD = DSINH(2.125D0) 02230827 DVD = DCOSH(2.0D0 + BVD) 02240827 AVD = DVD ** 2 - CVD ** 2 - DCOSH(0.0D0) 02250827 IF (AVD + 0.5000000000D-09) 20090, 10090, 40090 02260827 40090 IF (AVD - 0.5000000000D-09) 10090, 10090, 20090 02270827 10090 IVPASS = IVPASS + 1 02280827 WRITE (NUVI, 80002) IVTNUM 02290827 GO TO 0091 02300827 20090 IVFAIL = IVFAIL + 1 02310827 DVCORR = 0.0D+00 02320827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 02330827 0091 CONTINUE 02340827 CT010* TEST 10 TANH(X) = 1 - 2/(EXP(2X)+1) 02350827 IVTNUM = 10 02360827 BVD = 5.0D0 02370827 CVD = 2.0D0 02380827 DVD = DLOG10(BVD * CVD) - DSQRT(4.0D0) / 02390827 1 (DEXP(2.0D0 * (BVD - CVD)) + DCOS(0.0D0)) 02400827 AVD = DVD - DTANH(3.0D0) 02410827 IF (AVD + 0.5000000000D-09) 20100, 10100, 40100 02420827 40100 IF (AVD - 0.5000000000D-09) 10100, 10100, 20100 02430827 10100 IVPASS = IVPASS + 1 02440827 WRITE (NUVI, 80002) IVTNUM 02450827 GO TO 0101 02460827 20100 IVFAIL = IVFAIL + 1 02470827 DVCORR = 0.0D+00 02480827 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 02490827 0101 CONTINUE 02500827 C***** 02510827 CBB** ********************** BBCSUM0 **********************************02520827 C**** WRITE OUT TEST SUMMARY 02530827 C**** 02540827 IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02550827 WRITE (I02, 90004) 02560827 WRITE (I02, 90014) 02570827 WRITE (I02, 90004) 02580827 WRITE (I02, 90020) IVPASS 02590827 WRITE (I02, 90022) IVFAIL 02600827 WRITE (I02, 90024) IVDELE 02610827 WRITE (I02, 90026) IVINSP 02620827 WRITE (I02, 90028) IVTOTN, IVTOTL 02630827 CBE** ********************** BBCSUM0 **********************************02640827 CBB** ********************** BBCFOOT0 **********************************02650827 C**** WRITE OUT REPORT FOOTINGS 02660827 C**** 02670827 WRITE (I02,90016) ZPROG, ZPROG 02680827 WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 02690827 WRITE (I02,90019) 02700827 CBE** ********************** BBCFOOT0 **********************************02710827 CBB** ********************** BBCFMT0A **********************************02720827 C**** FORMATS FOR TEST DETAIL LINES 02730827 C**** 02740827 80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 02750827 80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 02760827 80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 02770827 80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 02780827 80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 02790827 1I6,/," ",15X,"CORRECT= " ,I6) 02800827 80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02810827 1E12.5,/," ",16X,"CORRECT= " ,E12.5) 02820827 80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02830827 1A21,/," ",16X,"CORRECT= " ,A21) 02840827 80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 02850827 80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 02860827 80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 02870827 80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 02880827 80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 02890827 80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 02900827 80050 FORMAT (" ",48X,A31) 02910827 CBE** ********************** BBCFMT0A **********************************02920827 CBB** ********************** BBCFMAT1 **********************************02930827 C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE 02940827 C**** 02950827 80031 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02960827 1D17.10,/," ",16X,"CORRECT= " ,D17.10) 02970827 80033 FORMAT (" ",16X,"COMPUTED= " ,D17.10,10X,A31) 02980827 80035 FORMAT (" ",16X,"CORRECT= " ,D17.10,10X,A31) 02990827 80037 FORMAT (" ",16X,"COMPUTED= " ,"(",E12.5,", ",E12.5,")",6X,A31) 03000827 80039 FORMAT (" ",16X,"CORRECT= " ,"(",E12.5,", ",E12.5,")",6X,A31) 03010827 80041 FORMAT (" ",16X,"COMPUTED= " ,"(",F12.5,", ",F12.5,")",6X,A31) 03020827 80043 FORMAT (" ",16X,"CORRECT= " ,"(",F12.5,", ",F12.5,")",6X,A31) 03030827 80045 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03040827 1"(",F12.5,", ",F12.5,")"/," ",16X,"CORRECT= " , 03050827 2"(",F12.5,", ",F12.5,")") 03060827 CBE** ********************** BBCFMAT1 **********************************03070827 CBB** ********************** BBCFMT0B **********************************03080827 C**** FORMAT STATEMENTS FOR PAGE HEADERS 03090827 C**** 03100827 90002 FORMAT ("1") 03110827 90004 FORMAT (" ") 03120827 90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03130827 90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03140827 90008 FORMAT (" ",21X,A13,A17) 03150827 90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03160827 90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03170827 90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03180827 1 7X,"REMARKS",24X) 03190827 90014 FORMAT (" ","----------------------------------------------" , 03200827 1 "---------------------------------" ) 03210827 90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03220827 C**** 03230827 C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03240827 C**** 03250827 90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03260827 90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03270827 1 A13) 03280827 90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03290827 C**** 03300827 C**** FORMAT STATEMENTS FOR RUN SUMMARY 03310827 C**** 03320827 90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03330827 90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03340827 90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03350827 90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03360827 90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03370827 CBE** ********************** BBCFMT0B **********************************03380827 C***** 03390827 C***** END OF TEST SEGMENT 202 03400827 STOP 03410827 END 03420827 03430827