blob: c585383cc69e920dafcbc9792637c9832af0a39e [file] [log] [blame]
PROGRAM FM371
C***********************************************************************00010371
C***** FORTRAN 77 00020371
C***** FM371 00030371
C***** XALG10 - (184) 00040371
C***** 00050371
C***********************************************************************00060371
C***** GENERAL PURPOSE SUBSET REF 00070371
C***** TEST INTRINSIC FUNCTION ALOG10 15.3 00080371
C***** TABLE 5 00090371
C***** 00100371
CBB** ********************** BBCCOMNT **********************************00110371
C**** 00120371
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00130371
C**** VERSION 2.1 00140371
C**** 00150371
C**** 00160371
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00170371
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00180371
C**** SOFTWARE STANDARDS VALIDATION GROUP 00190371
C**** BUILDING 225 RM A266 00200371
C**** GAITHERSBURG, MD 20899 00210371
C**** 00220371
C**** 00230371
C**** 00240371
CBE** ********************** BBCCOMNT **********************************00250371
CBB** ********************** BBCINITA **********************************00260371
C**** SPECIFICATION STATEMENTS 00270371
C**** 00280371
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00290371
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00300371
CBE** ********************** BBCINITA **********************************00310371
CBB** ********************** BBCINITB **********************************00320371
C**** INITIALIZE SECTION 00330371
DATA ZVERS, ZVERSD, ZDATE 00340371
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00350371
DATA ZCOMPL, ZNAME, ZTAPE 00360371
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00370371
DATA ZPROJ, ZTAPED, ZPROG 00380371
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00390371
DATA REMRKS /' '/ 00400371
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00410371
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00420371
C**** 00430371
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00440371
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00450371
CZ03 ZPROG = 'PROGRAM NAME' 00460371
CZ04 ZDATE = 'DATE OF TEST' 00470371
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00480371
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00490371
CZ07 ZNAME = 'NAME OF USER' 00500371
CZ08 ZTAPE = 'TAPE OWNER/ID' 00510371
CZ09 ZTAPED = 'DATE TAPE COPIED' 00520371
C 00530371
IVPASS = 0 00540371
IVFAIL = 0 00550371
IVDELE = 0 00560371
IVINSP = 0 00570371
IVTOTL = 0 00580371
IVTOTN = 0 00590371
ICZERO = 0 00600371
C 00610371
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620371
I01 = 05 00630371
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640371
I02 = 06 00650371
C 00660371
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00670371
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00680371
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00690371
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00700371
C 00710371
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00720371
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00730371
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00740371
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00750371
C 00760371
CBE** ********************** BBCINITB **********************************00770371
NUVI = I02 00780371
IVTOTL = 15 00790371
ZPROG = 'FM371' 00800371
CBB** ********************** BBCHED0A **********************************00810371
C**** 00820371
C**** WRITE REPORT TITLE 00830371
C**** 00840371
WRITE (I02, 90002) 00850371
WRITE (I02, 90006) 00860371
WRITE (I02, 90007) 00870371
WRITE (I02, 90008) ZVERS, ZVERSD 00880371
WRITE (I02, 90009) ZPROG, ZPROG 00890371
WRITE (I02, 90010) ZDATE, ZCOMPL 00900371
CBE** ********************** BBCHED0A **********************************00910371
C***** 00920371
C***** HEADER FOR SEGMENT 184 00930371
WRITE(NUVI,18400) 00940371
18400 FORMAT(" ", / " XALG10 - (184) INTRINSIC FUNCTIONS" // 00950371
1 " ALOG10 (COMMON LOGARITHM)" // 00960371
2 " SUBSET REF. - 15.3" ) 00970371
CBB** ********************** BBCHED0B **********************************00980371
C**** WRITE DETAIL REPORT HEADERS 00990371
C**** 01000371
WRITE (I02,90004) 01010371
WRITE (I02,90004) 01020371
WRITE (I02,90013) 01030371
WRITE (I02,90014) 01040371
WRITE (I02,90015) IVTOTL 01050371
CBE** ********************** BBCHED0B **********************************01060371
C***** 01070371
CT001* TEST 1 ONE, SINCE LN(1.0) = 0.0 01080371
IVTNUM = 1 01090371
BVS = 1.0 01100371
AVS = ALOG10(BVS) 01110371
IF (AVS + 0.50000E-04) 20010, 10010, 40010 01120371
40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 01130371
10010 IVPASS = IVPASS + 1 01140371
WRITE (NUVI, 80002) IVTNUM 01150371
GO TO 0011 01160371
20010 IVFAIL = IVFAIL + 1 01170371
RVCORR = 0.00000000000000 01180371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01190371
0011 CONTINUE 01200371
CT002* TEST 2 A VALUE CLOSE TO TEN 01210371
IVTNUM = 2 01220371
AVS = ALOG10(9.875) 01230371
IF (AVS - 0.99448E+00) 20020, 10020, 40020 01240371
40020 IF (AVS - 0.99459E+00) 10020, 10020, 20020 01250371
10020 IVPASS = IVPASS + 1 01260371
WRITE (NUVI, 80002) IVTNUM 01270371
GO TO 0021 01280371
20020 IVFAIL = IVFAIL + 1 01290371
RVCORR = 0.99453710429850 01300371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01310371
0021 CONTINUE 01320371
CT003* TEST 3 THE VALUE 10.0 01330371
IVTNUM = 3 01340371
AVS = ALOG10(10.0) 01350371
IF (AVS - 0.99995E+00) 20030, 10030, 40030 01360371
40030 IF (AVS - 0.10001E+01) 10030, 10030, 20030 01370371
10030 IVPASS = IVPASS + 1 01380371
WRITE (NUVI, 80002) IVTNUM 01390371
GO TO 0031 01400371
20030 IVFAIL = IVFAIL + 1 01410371
RVCORR = 1.00000000000000 01420371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01430371
0031 CONTINUE 01440371
CT004* TEST 4 THE VALUE 20.5 01450371
IVTNUM = 4 01460371
AVS = ALOG10(20.5) 01470371
IF (AVS - 0.13116E+01) 20040, 10040, 40040 01480371
40040 IF (AVS - 0.13119E+01) 10040, 10040, 20040 01490371
10040 IVPASS = IVPASS + 1 01500371
WRITE (NUVI, 80002) IVTNUM 01510371
GO TO 0041 01520371
20040 IVFAIL = IVFAIL + 1 01530371
RVCORR = 1.31175386105575 01540371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01550371
0041 CONTINUE 01560371
CT005* TEST 5 THE VALUE 99.0 01570371
IVTNUM = 5 01580371
AVS = ALOG10(99.0) 01590371
IF (AVS - 0.19955E+01) 20050, 10050, 40050 01600371
40050 IF (AVS - 0.19958E+01) 10050, 10050, 20050 01610371
10050 IVPASS = IVPASS + 1 01620371
WRITE (NUVI, 80002) IVTNUM 01630371
GO TO 0051 01640371
20050 IVFAIL = IVFAIL + 1 01650371
RVCORR = 1.99563519459755 01660371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01670371
0051 CONTINUE 01680371
CT006* TEST 6 VARIABLES WITHIN AN EXPRESSION 01690371
IVTNUM = 6 01700371
BVS = 1.0 01710371
CVS = 8.0 01720371
AVS = ALOG10(3.0 * BVS / CVS) 01730371
IF (AVS + 0.42599E+00) 20060, 10060, 40060 01740371
40060 IF (AVS + 0.42594E+00) 10060, 10060, 20060 01750371
10060 IVPASS = IVPASS + 1 01760371
WRITE (NUVI, 80002) IVTNUM 01770371
GO TO 0061 01780371
20060 IVFAIL = IVFAIL + 1 01790371
RVCORR = -0.42596873227228 01800371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01810371
0061 CONTINUE 01820371
CT007* TEST 7 VARIABLES WITHIN AN EXPRESSION 01830371
IVTNUM = 7 01840371
BVS = 1.0 01850371
CVS = 8.0 01860371
AVS = ALOG10(5.0 * BVS / CVS) 01870371
IF (AVS + 0.20413E+00) 20070, 10070, 40070 01880371
40070 IF (AVS + 0.20411E+00) 10070, 10070, 20070 01890371
10070 IVPASS = IVPASS + 1 01900371
WRITE (NUVI, 80002) IVTNUM 01910371
GO TO 0071 01920371
20070 IVFAIL = IVFAIL + 1 01930371
RVCORR = -0.20411998265592 01940371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01950371
0071 CONTINUE 01960371
CT008* TEST 8 AN EXPRESSION SUPPLIED TO ALOG10 01970371
IVTNUM = 8 01980371
AVS = ALOG10(75.0 / 100.0) 01990371
IF (AVS + 0.12495E+00) 20080, 10080, 40080 02000371
40080 IF (AVS + 0.12493E+00) 10080, 10080, 20080 02010371
10080 IVPASS = IVPASS + 1 02020371
WRITE (NUVI, 80002) IVTNUM 02030371
GO TO 0081 02040371
20080 IVFAIL = IVFAIL + 1 02050371
RVCORR = -0.12493873660830 02060371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02070371
0081 CONTINUE 02080371
CT009* TEST 9 VARIABLES WITHIN AN EXPRESSION 02090371
IVTNUM = 9 02100371
BVS = 1.0 02110371
CVS = 8.0 02120371
AVS = ALOG10(7.0 * BVS / CVS) 02130371
IF (AVS + 0.57995E-01) 20090, 10090, 40090 02140371
40090 IF (AVS + 0.57989E-01) 10090, 10090, 20090 02150371
10090 IVPASS = IVPASS + 1 02160371
WRITE (NUVI, 80002) IVTNUM 02170371
GO TO 0091 02180371
20090 IVFAIL = IVFAIL + 1 02190371
RVCORR = -0.05799194697769 02200371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02210371
0091 CONTINUE 02220371
CT010* TEST 10 A VALUE CLOSE TO ONE 02230371
IVTNUM = 10 02240371
AVS = ALOG10(0.9921875) 02250371
IF (AVS + 0.34065E-02) 20100, 10100, 40100 02260371
40100 IF (AVS + 0.34060E-02) 10100, 10100, 20100 02270371
10100 IVPASS = IVPASS + 1 02280371
WRITE (NUVI, 80002) IVTNUM 02290371
GO TO 0101 02300371
20100 IVFAIL = IVFAIL + 1 02310371
RVCORR = -0.0034062486919115 02320371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02330371
0101 CONTINUE 02340371
CT012* TEST 11 A VALUE CLOSE TO ZERO 02480371
IVTNUM = 11 02490371
BVS = 256.0 02500371
AVS = ALOG10(1.0 / BVS) 02510371
IF (AVS + 0.24084E+01) 20120, 10120, 40120 02520371
40120 IF (AVS + 0.24081E+01) 10120, 10120, 20120 02530371
10120 IVPASS = IVPASS + 1 02540371
WRITE (NUVI, 80002) IVTNUM 02550371
GO TO 0121 02560371
20120 IVFAIL = IVFAIL + 1 02570371
RVCORR = -2.40823996531185 02580371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02590371
0121 CONTINUE 02600371
CT013* TEST 12 A VALUE CLOSE TO ZERO 02610371
IVTNUM = 12 02620371
BVS = 128.0 02630371
AVS = ALOG10(1.0 / (BVS * 8.0)) 02640371
IF (AVS + 0.30105E+01) 20130, 10130, 40130 02650371
40130 IF (AVS + 0.30101E+01) 10130, 10130, 20130 02660371
10130 IVPASS = IVPASS + 1 02670371
WRITE (NUVI, 80002) IVTNUM 02680371
GO TO 0131 02690371
20130 IVFAIL = IVFAIL + 1 02700371
RVCORR = -3.01029995663981 02710371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02720371
0131 CONTINUE 02730371
CT014* TEST 13 AN ARGUMENT OF HIGH MAGNITUDE 02740371
IVTNUM = 13 02750371
BVS = 2.0E+35 02760371
AVS = ALOG10(BVS) 02770371
IF (AVS - 0.35299E+02) 20140, 10140, 40140 02780371
40140 IF (AVS - 0.35303E+02) 10140, 10140, 20140 02790371
10140 IVPASS = IVPASS + 1 02800371
WRITE (NUVI, 80002) IVTNUM 02810371
GO TO 0141 02820371
20140 IVFAIL = IVFAIL + 1 02830371
RVCORR = 35.30102999566398 02840371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02850371
0141 CONTINUE 02860371
CT015* TEST 14 AN ARGUMENT OF LOW MAGNITUDE 02870371
IVTNUM = 14 02880371
BVS = 2.0E-35 02890371
AVS = ALOG10(BVS) 02900371
IF (AVS + 0.34701E+02) 20150, 10150, 40150 02910371
40150 IF (AVS + 0.34697E+02) 10150, 10150, 20150 02920371
10150 IVPASS = IVPASS + 1 02930371
WRITE (NUVI, 80002) IVTNUM 02940371
GO TO 0151 02950371
20150 IVFAIL = IVFAIL + 1 02960371
RVCORR = -34.69897000433602 02970371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02980371
0151 CONTINUE 02990371
CT016* TEST 15 THE FUNCTION APPLIED TWICE 03000371
IVTNUM = 15 03010371
AVS = ALOG10(20.0) - ALOG10(2.0) 03020371
IF (AVS - 0.99995E+00) 20160, 10160, 40160 03030371
40160 IF (AVS - 0.10001E+01) 10160, 10160, 20160 03040371
10160 IVPASS = IVPASS + 1 03050371
WRITE (NUVI, 80002) IVTNUM 03060371
GO TO 0161 03070371
20160 IVFAIL = IVFAIL + 1 03080371
RVCORR = 1.0000000 03090371
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 03100371
0161 CONTINUE 03110371
C***** 03120371
CBB** ********************** BBCSUM0 **********************************03130371
C**** WRITE OUT TEST SUMMARY 03140371
C**** 03150371
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 03160371
WRITE (I02, 90004) 03170371
WRITE (I02, 90014) 03180371
WRITE (I02, 90004) 03190371
WRITE (I02, 90020) IVPASS 03200371
WRITE (I02, 90022) IVFAIL 03210371
WRITE (I02, 90024) IVDELE 03220371
WRITE (I02, 90026) IVINSP 03230371
WRITE (I02, 90028) IVTOTN, IVTOTL 03240371
CBE** ********************** BBCSUM0 **********************************03250371
CBB** ********************** BBCFOOT0 **********************************03260371
C**** WRITE OUT REPORT FOOTINGS 03270371
C**** 03280371
WRITE (I02,90016) ZPROG, ZPROG 03290371
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 03300371
WRITE (I02,90019) 03310371
CBE** ********************** BBCFOOT0 **********************************03320371
CBB** ********************** BBCFMT0A **********************************03330371
C**** FORMATS FOR TEST DETAIL LINES 03340371
C**** 03350371
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 03360371
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 03370371
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 03380371
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 03390371
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 03400371
1I6,/," ",15X,"CORRECT= " ,I6) 03410371
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03420371
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 03430371
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03440371
1A21,/," ",16X,"CORRECT= " ,A21) 03450371
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 03460371
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 03470371
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 03480371
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 03490371
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 03500371
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 03510371
80050 FORMAT (" ",48X,A31) 03520371
CBE** ********************** BBCFMT0A **********************************03530371
CBB** ********************** BBCFMT0B **********************************03540371
C**** FORMAT STATEMENTS FOR PAGE HEADERS 03550371
C**** 03560371
90002 FORMAT ("1") 03570371
90004 FORMAT (" ") 03580371
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03590371
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03600371
90008 FORMAT (" ",21X,A13,A17) 03610371
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03620371
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03630371
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03640371
1 7X,"REMARKS",24X) 03650371
90014 FORMAT (" ","----------------------------------------------" , 03660371
1 "---------------------------------" ) 03670371
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03680371
C**** 03690371
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03700371
C**** 03710371
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03720371
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03730371
1 A13) 03740371
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03750371
C**** 03760371
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03770371
C**** 03780371
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03790371
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03800371
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03810371
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03820371
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03830371
CBE** ********************** BBCFMT0B **********************************03840371
C***** 03850371
C***** END OF TEST SEGMENT 184 03860371
STOP 03870371
END 03880371
03890371