PROGRAM FM374 C***********************************************************************00010374 C***** FORTRAN 77 00020374 C***** FM374 00030374 C***** XTAN - (191) 00040374 C***** 00050374 C***********************************************************************00060374 C***** GENERAL PURPOSE SUBSET REF 00070374 C***** TEST INTRINSIC FUNCTION TAN 15.3 00080374 C***** TABLE 5 00090374 C***** 00100374 CBB** ********************** BBCCOMNT **********************************00110374 C**** 00120374 C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00130374 C**** VERSION 2.1 00140374 C**** 00150374 C**** 00160374 C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00170374 C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00180374 C**** SOFTWARE STANDARDS VALIDATION GROUP 00190374 C**** BUILDING 225 RM A266 00200374 C**** GAITHERSBURG, MD 20899 00210374 C**** 00220374 C**** 00230374 C**** 00240374 CBE** ********************** BBCCOMNT **********************************00250374 CBB** ********************** BBCINITA **********************************00260374 C**** SPECIFICATION STATEMENTS 00270374 C**** 00280374 CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00290374 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00300374 CBE** ********************** BBCINITA **********************************00310374 CBB** ********************** BBCINITB **********************************00320374 C**** INITIALIZE SECTION 00330374 DATA ZVERS, ZVERSD, ZDATE 00340374 1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00350374 DATA ZCOMPL, ZNAME, ZTAPE 00360374 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00370374 DATA ZPROJ, ZTAPED, ZPROG 00380374 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00390374 DATA REMRKS /' '/ 00400374 C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00410374 C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00420374 C**** 00430374 CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00440374 CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00450374 CZ03 ZPROG = 'PROGRAM NAME' 00460374 CZ04 ZDATE = 'DATE OF TEST' 00470374 CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00480374 CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00490374 CZ07 ZNAME = 'NAME OF USER' 00500374 CZ08 ZTAPE = 'TAPE OWNER/ID' 00510374 CZ09 ZTAPED = 'DATE TAPE COPIED' 00520374 C 00530374 IVPASS = 0 00540374 IVFAIL = 0 00550374 IVDELE = 0 00560374 IVINSP = 0 00570374 IVTOTL = 0 00580374 IVTOTN = 0 00590374 ICZERO = 0 00600374 C 00610374 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620374 I01 = 05 00630374 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640374 I02 = 06 00650374 C 00660374 CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00670374 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00680374 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00690374 C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00700374 C 00710374 CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00720374 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00730374 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00740374 C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00750374 C 00760374 CBE** ********************** BBCINITB **********************************00770374 NUVI = I02 00780374 IVTOTL = 12 00790374 ZPROG = 'FM374' 00800374 CBB** ********************** BBCHED0A **********************************00810374 C**** 00820374 C**** WRITE REPORT TITLE 00830374 C**** 00840374 WRITE (I02, 90002) 00850374 WRITE (I02, 90006) 00860374 WRITE (I02, 90007) 00870374 WRITE (I02, 90008) ZVERS, ZVERSD 00880374 WRITE (I02, 90009) ZPROG, ZPROG 00890374 WRITE (I02, 90010) ZDATE, ZCOMPL 00900374 CBE** ********************** BBCHED0A **********************************00910374 C***** 00920374 C***** HEADER FOR SEGMENT 191 00930374 WRITE(NUVI,19100) 00940374 19100 FORMAT(" ", / " XTAN - (191) INTRINSIC FUNCTIONS" // 00950374 1 " TAN (TANGENT)" // 00960374 2 " SUBSET REF. - 15.3" ) 00970374 CBB** ********************** BBCHED0B **********************************00980374 C**** WRITE DETAIL REPORT HEADERS 00990374 C**** 01000374 WRITE (I02,90004) 01010374 WRITE (I02,90004) 01020374 WRITE (I02,90013) 01030374 WRITE (I02,90014) 01040374 WRITE (I02,90015) IVTOTL 01050374 CBE** ********************** BBCHED0B **********************************01060374 C***** 01070374 PIVS = 3.1415926535897932384626434 01080374 C***** 01090374 CT001* TEST 1 ZERO (0.0), SINCE TAN(0) = 0 01100374 IVTNUM = 1 01110374 BVS = 0.0 01120374 AVS = TAN(BVS) 01130374 IF (AVS + 0.00005) 20010, 10010, 40010 01140374 40010 IF (AVS - 0.00005) 10010, 10010, 20010 01150374 10010 IVPASS = IVPASS + 1 01160374 WRITE (NUVI, 80002) IVTNUM 01170374 GO TO 0011 01180374 20010 IVFAIL = IVFAIL + 1 01190374 RVCORR = 0.0 01200374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01210374 0011 CONTINUE 01220374 CT002* TEST 2 2*PI 01230374 IVTNUM = 2 01240374 BVS = 6.2831853071 01250374 AVS = TAN(BVS) 01260374 IF (AVS + 0.00005) 20020, 10020, 40020 01270374 40020 IF (AVS - 0.00005) 10020, 10020, 20020 01280374 10020 IVPASS = IVPASS + 1 01290374 WRITE (NUVI, 80002) IVTNUM 01300374 GO TO 0021 01310374 20020 IVFAIL = IVFAIL + 1 01320374 RVCORR = 0.0 01330374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01340374 0021 CONTINUE 01350374 CT003* TEST 3 3*PI 01360374 IVTNUM = 3 01370374 BVS = 9.424777960 01380374 AVS = TAN(BVS) 01390374 IF (AVS + 0.00005) 20030, 10030, 40030 01400374 40030 IF (AVS - 0.00005) 10030, 10030, 20030 01410374 10030 IVPASS = IVPASS + 1 01420374 WRITE (NUVI, 80002) IVTNUM 01430374 GO TO 0031 01440374 20030 IVFAIL = IVFAIL + 1 01450374 RVCORR = 0.0 01460374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01470374 0031 CONTINUE 01480374 CT004* TEST 4 PI/4 01490374 IVTNUM = 4 01500374 AVS = TAN(PIVS / 4.0) 01510374 IF (AVS - 0.99995) 20040, 10040, 40040 01520374 40040 IF (AVS - 1.0001) 10040, 10040, 20040 01530374 10040 IVPASS = IVPASS + 1 01540374 WRITE (NUVI, 80002) IVTNUM 01550374 GO TO 0041 01560374 20040 IVFAIL = IVFAIL + 1 01570374 RVCORR = 1.0 01580374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01590374 0041 CONTINUE 01600374 CT005* TEST 5 5*PI/4 01610374 IVTNUM = 5 01620374 BVS = 5.0 * PIVS / 4.0 01630374 AVS = TAN(BVS) 01640374 IF (AVS - 0.99995) 20050, 10050, 40050 01650374 40050 IF (AVS - 1.0001) 10050, 10050, 20050 01660374 10050 IVPASS = IVPASS + 1 01670374 WRITE (NUVI, 80002) IVTNUM 01680374 GO TO 0051 01690374 20050 IVFAIL = IVFAIL + 1 01700374 RVCORR = 1.0 01710374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01720374 0051 CONTINUE 01730374 CT006* TEST 6 A NEGATIVE VALUE 01740374 IVTNUM = 6 01750374 BVS = -2.0 / 1.0 01760374 AVS = TAN(BVS) 01770374 IF (AVS - 2.1849) 20060, 10060, 40060 01780374 40060 IF (AVS - 2.1852) 10060, 10060, 20060 01790374 10060 IVPASS = IVPASS + 1 01800374 WRITE (NUVI, 80002) IVTNUM 01810374 GO TO 0061 01820374 20060 IVFAIL = IVFAIL + 1 01830374 RVCORR = 2.18503986326151 01840374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01850374 0061 CONTINUE 01860374 CT007* TEST 7 A POSITIVE VALUE 01870374 IVTNUM = 7 01880374 BVS = 350.0 / 100.0 01890374 AVS = TAN(BVS) 01900374 IF (AVS - 0.37456) 20070, 10070, 40070 01910374 40070 IF (AVS - 0.37461) 10070, 10070, 20070 01920374 10070 IVPASS = IVPASS + 1 01930374 WRITE (NUVI, 80002) IVTNUM 01940374 GO TO 0071 01950374 20070 IVFAIL = IVFAIL + 1 01960374 RVCORR = 0.37458564015859 01970374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01980374 0071 CONTINUE 01990374 CT008* TEST 8 (PI / 2) - 1/8 02000374 IVTNUM = 8 02010374 BVS = 1.4457963267 02020374 AVS = TAN(BVS) 02030374 IF (AVS - 7.9578) 20080, 10080, 40080 02040374 40080 IF (AVS - 7.9587) 10080, 10080, 20080 02050374 10080 IVPASS = IVPASS + 1 02060374 WRITE (NUVI, 80002) IVTNUM 02070374 GO TO 0081 02080374 20080 IVFAIL = IVFAIL + 1 02090374 RVCORR = 7.95828986586701 02100374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02110374 0081 CONTINUE 02120374 CT009* TEST 9 (PI / 2) + 1/256 02130374 IVTNUM = 9 02140374 BVS = 1.5747025767 02150374 AVS = TAN(BVS) 02160374 IF (AVS + 256.02) 20090, 10090, 40090 02170374 40090 IF (AVS + 255.98) 10090, 10090, 20090 02180374 10090 IVPASS = IVPASS + 1 02190374 WRITE (NUVI, 80002) IVTNUM 02200374 GO TO 0091 02210374 20090 IVFAIL = IVFAIL + 1 02220374 RVCORR = -255.99869791534212 02230374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02240374 0091 CONTINUE 02250374 CT012* TEST 10 LARGE ARGUMENT TO TEST ARGUMENT REDUCTION 02510374 IVTNUM = 10 02520374 AVS = TAN(2000.0) 02530374 IF (AVS + 2.5312) 20120, 10120, 40120 02540374 40120 IF (AVS + 2.5308) 10120, 10120, 20120 02550374 10120 IVPASS = IVPASS + 1 02560374 WRITE (NUVI, 80002) IVTNUM 02570374 GO TO 0121 02580374 20120 IVFAIL = IVFAIL + 1 02590374 RVCORR = -2.53099832809334 02600374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02610374 0121 CONTINUE 02620374 CT013* TEST 11 ARGUMENT OF LOW MAGNITUDE 02630374 IVTNUM = 11 02640374 BVS = PIVS * 1.0E-35 02650374 AVS = TAN(BVS) 02660374 IF (AVS - 3.1414E-35) 20130, 10130, 40130 02670374 40130 IF (AVS - 3.1418E-35) 10130, 10130, 20130 02680374 10130 IVPASS = IVPASS + 1 02690374 WRITE (NUVI, 80002) IVTNUM 02700374 GO TO 0131 02710374 20130 IVFAIL = IVFAIL + 1 02720374 RVCORR = 3.14159265358979E-35 02730374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02740374 0131 CONTINUE 02750374 CT014* TEST 12 THE FUNCTION APPLIED TWICE 02760374 IVTNUM = 12 02770374 AVS = TAN(PIVS / 6.0) * TAN(PIVS / 6.0) 02780374 IF (AVS - 0.33331) 20140, 10140, 40140 02790374 40140 IF (AVS - 0.33335) 10140, 10140, 20140 02800374 10140 IVPASS = IVPASS + 1 02810374 WRITE (NUVI, 80002) IVTNUM 02820374 GO TO 0141 02830374 20140 IVFAIL = IVFAIL + 1 02840374 RVCORR = 0.33333333333333 02850374 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02860374 0141 CONTINUE 02870374 C***** 02880374 CBB** ********************** BBCSUM0 **********************************02890374 C**** WRITE OUT TEST SUMMARY 02900374 C**** 02910374 IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02920374 WRITE (I02, 90004) 02930374 WRITE (I02, 90014) 02940374 WRITE (I02, 90004) 02950374 WRITE (I02, 90020) IVPASS 02960374 WRITE (I02, 90022) IVFAIL 02970374 WRITE (I02, 90024) IVDELE 02980374 WRITE (I02, 90026) IVINSP 02990374 WRITE (I02, 90028) IVTOTN, IVTOTL 03000374 CBE** ********************** BBCSUM0 **********************************03010374 CBB** ********************** BBCFOOT0 **********************************03020374 C**** WRITE OUT REPORT FOOTINGS 03030374 C**** 03040374 WRITE (I02,90016) ZPROG, ZPROG 03050374 WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 03060374 WRITE (I02,90019) 03070374 CBE** ********************** BBCFOOT0 **********************************03080374 CBB** ********************** BBCFMT0A **********************************03090374 C**** FORMATS FOR TEST DETAIL LINES 03100374 C**** 03110374 80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 03120374 80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 03130374 80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 03140374 80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 03150374 80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 03160374 1I6,/," ",15X,"CORRECT= " ,I6) 03170374 80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03180374 1E12.5,/," ",16X,"CORRECT= " ,E12.5) 03190374 80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03200374 1A21,/," ",16X,"CORRECT= " ,A21) 03210374 80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 03220374 80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 03230374 80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 03240374 80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 03250374 80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 03260374 80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 03270374 80050 FORMAT (" ",48X,A31) 03280374 CBE** ********************** BBCFMT0A **********************************03290374 CBB** ********************** BBCFMT0B **********************************03300374 C**** FORMAT STATEMENTS FOR PAGE HEADERS 03310374 C**** 03320374 90002 FORMAT ("1") 03330374 90004 FORMAT (" ") 03340374 90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03350374 90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03360374 90008 FORMAT (" ",21X,A13,A17) 03370374 90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03380374 90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03390374 90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03400374 1 7X,"REMARKS",24X) 03410374 90014 FORMAT (" ","----------------------------------------------" , 03420374 1 "---------------------------------" ) 03430374 90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03440374 C**** 03450374 C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03460374 C**** 03470374 90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03480374 90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03490374 1 A13) 03500374 90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03510374 C**** 03520374 C**** FORMAT STATEMENTS FOR RUN SUMMARY 03530374 C**** 03540374 90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03550374 90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03560374 90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03570374 90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03580374 90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03590374 CBE** ********************** BBCFMT0B **********************************03600374 C***** 03610374 C***** END OF TEST SEGMENT 191 03620374 STOP 03630374 END 03640374 03650374