blob: 04881c334e4e12ffc827fb954347b454f8718b13 [file] [log] [blame]
PROGRAM FM376
C***********************************************************************00010376
C***** FORTRAN 77 00020376
C***** FM376 00030376
C***** XATAN - (195) 00040376
C***** 00050376
C***********************************************************************00060376
C***** GENERAL PURPOSE SUBSET REF 00070376
C***** TEST INTRINSIC FUNCTION ATAN, ATAN2 15.3 00080376
C***** INTRINSIC FUNCTION SQRT ASSUMED WORKING TABLE 5 00090376
C***** 00100376
CBB** ********************** BBCCOMNT **********************************00110376
C**** 00120376
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00130376
C**** VERSION 2.1 00140376
C**** 00150376
C**** 00160376
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00170376
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00180376
C**** SOFTWARE STANDARDS VALIDATION GROUP 00190376
C**** BUILDING 225 RM A266 00200376
C**** GAITHERSBURG, MD 20899 00210376
C**** 00220376
C**** 00230376
C**** 00240376
CBE** ********************** BBCCOMNT **********************************00250376
CBB** ********************** BBCINITA **********************************00260376
C**** SPECIFICATION STATEMENTS 00270376
C**** 00280376
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00290376
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00300376
CBE** ********************** BBCINITA **********************************00310376
CBB** ********************** BBCINITB **********************************00320376
C**** INITIALIZE SECTION 00330376
DATA ZVERS, ZVERSD, ZDATE 00340376
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00350376
DATA ZCOMPL, ZNAME, ZTAPE 00360376
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00370376
DATA ZPROJ, ZTAPED, ZPROG 00380376
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00390376
DATA REMRKS /' '/ 00400376
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00410376
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00420376
C**** 00430376
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00440376
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00450376
CZ03 ZPROG = 'PROGRAM NAME' 00460376
CZ04 ZDATE = 'DATE OF TEST' 00470376
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00480376
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00490376
CZ07 ZNAME = 'NAME OF USER' 00500376
CZ08 ZTAPE = 'TAPE OWNER/ID' 00510376
CZ09 ZTAPED = 'DATE TAPE COPIED' 00520376
C 00530376
IVPASS = 0 00540376
IVFAIL = 0 00550376
IVDELE = 0 00560376
IVINSP = 0 00570376
IVTOTL = 0 00580376
IVTOTN = 0 00590376
ICZERO = 0 00600376
C 00610376
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620376
I01 = 05 00630376
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640376
I02 = 06 00650376
C 00660376
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00670376
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00680376
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00690376
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00700376
C 00710376
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00720376
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00730376
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00740376
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00750376
C 00760376
CBE** ********************** BBCINITB **********************************00770376
NUVI = I02 00780376
IVTOTL = 13 00790376
ZPROG = 'FM376' 00800376
CBB** ********************** BBCHED0A **********************************00810376
C**** 00820376
C**** WRITE REPORT TITLE 00830376
C**** 00840376
WRITE (I02, 90002) 00850376
WRITE (I02, 90006) 00860376
WRITE (I02, 90007) 00870376
WRITE (I02, 90008) ZVERS, ZVERSD 00880376
WRITE (I02, 90009) ZPROG, ZPROG 00890376
WRITE (I02, 90010) ZDATE, ZCOMPL 00900376
CBE** ********************** BBCHED0A **********************************00910376
C***** 00920376
C***** HEADER FOR SEGMENT 195 00930376
WRITE(NUVI,19500) 00940376
19500 FORMAT(" ", / " XATAN - (195) INTRINSIC FUNCTIONS" // 00950376
1 " ATAN, ATAN2 (ARCTANGENT)" // 00960376
2 " SUBSET REF. - 15.3" ) 00970376
CBB** ********************** BBCHED0B **********************************00980376
C**** WRITE DETAIL REPORT HEADERS 00990376
C**** 01000376
WRITE (I02,90004) 01010376
WRITE (I02,90004) 01020376
WRITE (I02,90013) 01030376
WRITE (I02,90014) 01040376
WRITE (I02,90015) IVTOTL 01050376
CBE** ********************** BBCHED0B **********************************01060376
C***** 01070376
WRITE(NUVI,19501) 01080376
C***** 01090376
19501 FORMAT(/ 8X, "TEST OF ATAN" ) 01100376
C***** 01110376
CT001* TEST 1 TEST LARGE VALUES TO TEST SINGULARITY 01120376
IVTNUM = 1 01130376
BVS = 500.0 01140376
AVS = ATAN(BVS) 01150376
IF (AVS - 0.15687E+01) 20010, 10010, 40010 01160376
40010 IF (AVS - 0.15689E+01) 10010, 10010, 20010 01170376
10010 IVPASS = IVPASS + 1 01180376
WRITE (NUVI, 80002) IVTNUM 01190376
GO TO 0011 01200376
20010 IVFAIL = IVFAIL + 1 01210376
RVCORR = 1.56879632946156 01220376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01230376
0011 CONTINUE 01240376
CT002* TEST 2 TEST LARGE VALUES TO TEST SINGULARITY 01250376
IVTNUM = 2 01260376
AVS = ATAN(-1000.0) 01270376
IF (AVS + 0.15699E+01) 20020, 10020, 40020 01280376
40020 IF (AVS + 0.15697E+01) 10020, 10020, 20020 01290376
10020 IVPASS = IVPASS + 1 01300376
WRITE (NUVI, 80002) IVTNUM 01310376
GO TO 0021 01320376
20020 IVFAIL = IVFAIL + 1 01330376
RVCORR = -1.56979632712823 01340376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01350376
0021 CONTINUE 01360376
CT003* TEST 3 AN EXPRESSION PRESENTED TO ATAN 01370376
IVTNUM = 3 01380376
AVS = ATAN(100.0 / 100.0) 01390376
IF (AVS - 0.78535E+00) 20030, 10030, 40030 01400376
40030 IF (AVS - 0.78544E+00) 10030, 10030, 20030 01410376
10030 IVPASS = IVPASS + 1 01420376
WRITE (NUVI, 80002) IVTNUM 01430376
GO TO 0031 01440376
20030 IVFAIL = IVFAIL + 1 01450376
RVCORR = 0.78539816339745 01460376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01470376
0031 CONTINUE 01480376
CT004* TEST 4 A VARIABLE PRESENTED TO ATAN 01490376
IVTNUM = 4 01500376
BVS = -SQRT(3.0) 01510376
AVS = ATAN(BVS) 01520376
IF (AVS + 0.10473E+01) 20040, 10040, 40040 01530376
40040 IF (AVS + 0.10471E+01) 10040, 10040, 20040 01540376
10040 IVPASS = IVPASS + 1 01550376
WRITE (NUVI, 80002) IVTNUM 01560376
GO TO 0041 01570376
20040 IVFAIL = IVFAIL + 1 01580376
RVCORR = -1.04719755119660 01590376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01600376
0041 CONTINUE 01610376
CT005* TEST 5 AN ARGUMENT OF LOW MAGNITUDE 01620376
IVTNUM = 5 01630376
AVS = ATAN(1.0E-16) 01640376
IF (AVS - 0.99995E-16) 20050, 10050, 40050 01650376
40050 IF (AVS - 0.10001E-15) 10050, 10050, 20050 01660376
10050 IVPASS = IVPASS + 1 01670376
WRITE (NUVI, 80002) IVTNUM 01680376
GO TO 0051 01690376
20050 IVFAIL = IVFAIL + 1 01700376
RVCORR = 1.00000000000000E-16 01710376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01720376
0051 CONTINUE 01730376
CT006* TEST 6 AN ARGUMENT OF HIGH MAGNITUDE 01740376
IVTNUM = 6 01750376
AVS = ATAN(-2.0E+34) 01760376
IF (AVS + 0.15709E+01) 20060, 10060, 40060 01770376
40060 IF (AVS + 0.15707E+01) 10060, 10060, 20060 01780376
10060 IVPASS = IVPASS + 1 01790376
WRITE (NUVI, 80002) IVTNUM 01800376
GO TO 0061 01810376
20060 IVFAIL = IVFAIL + 1 01820376
RVCORR = -1.57079632679490 01830376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 01840376
0061 CONTINUE 01850376
C***** 01860376
WRITE(NUVI,19508) 01870376
19508 FORMAT(/ 08X, "TEST OF ATAN2" ) 01880376
CT007* TEST 7 TEST ATAN2 FOR (0,POSITIVE) 01890376
IVTNUM = 7 01900376
BVS = 10.0 / 10.0 01910376
CVS = 0.0 01920376
AVS = ATAN2(CVS, BVS) 01930376
IF (AVS + 0.50000E-04) 20070, 10070, 40070 01940376
40070 IF (AVS - 0.50000E-04) 10070, 10070, 20070 01950376
10070 IVPASS = IVPASS + 1 01960376
WRITE (NUVI, 80002) IVTNUM 01970376
GO TO 0071 01980376
20070 IVFAIL = IVFAIL + 1 01990376
RVCORR = 0.00000000000000 02000376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02010376
0071 CONTINUE 02020376
CT008* TEST 8 TEST ATAN2 FOR (0, NEGATIVE) 02030376
IVTNUM = 8 02040376
BVS = 0.0 02050376
CVS = -25.0 / 2.0 02060376
AVS = ATAN2(BVS, CVS) 02070376
IF (AVS - 0.31414E+01) 20080, 10080, 40080 02080376
40080 IF (AVS - 0.31418E+01) 10080, 10080, 20080 02090376
10080 IVPASS = IVPASS + 1 02100376
WRITE (NUVI, 80002) IVTNUM 02110376
GO TO 0081 02120376
20080 IVFAIL = IVFAIL + 1 02130376
RVCORR = 3.14159265358979 02140376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02150376
0081 CONTINUE 02160376
CT009* TEST 9 AN EXPRESSION PRESENTED TO ATAN2 02170376
IVTNUM = 9 02180376
BVS = 1.0 02190376
CVS = BVS + BVS 02200376
AVS = ATAN2(BVS * 2.0, CVS) 02210376
IF (AVS - 0.78535E+00) 20090, 10090, 40090 02220376
40090 IF (AVS - 0.78544E+00) 10090, 10090, 20090 02230376
10090 IVPASS = IVPASS + 1 02240376
WRITE (NUVI, 80002) IVTNUM 02250376
GO TO 0091 02260376
20090 IVFAIL = IVFAIL + 1 02270376
RVCORR = 0.78539816339745 02280376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02290376
0091 CONTINUE 02300376
CT010* TEST 10 TEST ATAN2(X,Y) FOR X NEAR ZERO 02310376
IVTNUM = 10 02320376
BVS = ASIN(0.6) 02330376
CVS = ACOS(0.8) 02340376
AVS = ATAN2(BVS, CVS) 02350376
IF (AVS - 0.78535E+00) 20100, 10100, 40100 02360376
40100 IF (AVS - 0.78544E+00) 10100, 10100, 20100 02370376
10100 IVPASS = IVPASS + 1 02380376
WRITE (NUVI, 80002) IVTNUM 02390376
GO TO 0101 02400376
20100 IVFAIL = IVFAIL + 1 02410376
RVCORR = 0.78539816339745 02420376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02430376
0101 CONTINUE 02440376
CT011* TEST 11 WHERE ATAN2(X,Y) IS ZERO FOR Y 02450376
IVTNUM = 11 02460376
AVS = ATAN2(1.2, 0.0) 02470376
IF (AVS - 0.15707E+01) 20110, 10110, 40110 02480376
40110 IF (AVS - 0.15709E+01) 10110, 10110, 20110 02490376
10110 IVPASS = IVPASS + 1 02500376
WRITE (NUVI, 80002) IVTNUM 02510376
GO TO 0111 02520376
20110 IVFAIL = IVFAIL + 1 02530376
RVCORR = 1.57079632679490 02540376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02550376
0111 CONTINUE 02560376
CT012* TEST 12 WHERE ATAN2(X,Y) IS ZERO FOR Y 02570376
IVTNUM = 12 02580376
BVS = -2.5 02590376
CVS = 0.0 02600376
AVS = ATAN2(BVS, CVS) 02610376
IF (AVS + 0.15709E+01) 20120, 10120, 40120 02620376
40120 IF (AVS + 0.15707E+01) 10120, 10120, 20120 02630376
10120 IVPASS = IVPASS + 1 02640376
WRITE (NUVI, 80002) IVTNUM 02650376
GO TO 0121 02660376
20120 IVFAIL = IVFAIL + 1 02670376
RVCORR = -1.57079632679490 02680376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02690376
0121 CONTINUE 02700376
CT013* TEST 13 COMPARISON OF ATAN WITH ATAN2 02710376
IVTNUM = 13 02720376
AVS = (ATAN(SQRT(3.0) / 3.0) * 2.0) 02730376
1 + ATAN2(-SQRT(3.0) / 2.0, 1.0 / 2.0) 02740376
IF (AVS + 0.50000E-04) 20130, 10130, 40130 02750376
40130 IF (AVS - 0.50000E-04) 10130, 10130, 20130 02760376
10130 IVPASS = IVPASS + 1 02770376
WRITE (NUVI, 80002) IVTNUM 02780376
GO TO 0131 02790376
20130 IVFAIL = IVFAIL + 1 02800376
RVCORR = 0.00000000000000 02810376
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02820376
0131 CONTINUE 02830376
C***** 02840376
CBB** ********************** BBCSUM0 **********************************02850376
C**** WRITE OUT TEST SUMMARY 02860376
C**** 02870376
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02880376
WRITE (I02, 90004) 02890376
WRITE (I02, 90014) 02900376
WRITE (I02, 90004) 02910376
WRITE (I02, 90020) IVPASS 02920376
WRITE (I02, 90022) IVFAIL 02930376
WRITE (I02, 90024) IVDELE 02940376
WRITE (I02, 90026) IVINSP 02950376
WRITE (I02, 90028) IVTOTN, IVTOTL 02960376
CBE** ********************** BBCSUM0 **********************************02970376
CBB** ********************** BBCFOOT0 **********************************02980376
C**** WRITE OUT REPORT FOOTINGS 02990376
C**** 03000376
WRITE (I02,90016) ZPROG, ZPROG 03010376
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 03020376
WRITE (I02,90019) 03030376
CBE** ********************** BBCFOOT0 **********************************03040376
CBB** ********************** BBCFMT0A **********************************03050376
C**** FORMATS FOR TEST DETAIL LINES 03060376
C**** 03070376
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 03080376
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 03090376
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 03100376
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 03110376
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 03120376
1I6,/," ",15X,"CORRECT= " ,I6) 03130376
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03140376
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 03150376
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03160376
1A21,/," ",16X,"CORRECT= " ,A21) 03170376
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 03180376
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 03190376
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 03200376
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 03210376
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 03220376
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 03230376
80050 FORMAT (" ",48X,A31) 03240376
CBE** ********************** BBCFMT0A **********************************03250376
CBB** ********************** BBCFMT0B **********************************03260376
C**** FORMAT STATEMENTS FOR PAGE HEADERS 03270376
C**** 03280376
90002 FORMAT ("1") 03290376
90004 FORMAT (" ") 03300376
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03310376
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03320376
90008 FORMAT (" ",21X,A13,A17) 03330376
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03340376
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03350376
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03360376
1 7X,"REMARKS",24X) 03370376
90014 FORMAT (" ","----------------------------------------------" , 03380376
1 "---------------------------------" ) 03390376
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03400376
C**** 03410376
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03420376
C**** 03430376
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03440376
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03450376
1 A13) 03460376
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03470376
C**** 03480376
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03490376
C**** 03500376
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03510376
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03520376
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03530376
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03540376
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03550376
CBE** ********************** BBCFMT0B **********************************03560376
C***** 03570376
C***** END OF TEST SEGMENT 195 03580376
STOP 03590376
END 03600376
03610376