blob: bff7a235fa246167e1a2f54526955fefec8617bf [file] [log] [blame]
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