blob: 1010b3ebee0378fd974c0d1fe3db6c6dd4174e48 [file] [log] [blame]
PROGRAM FM815
C***********************************************************************00010815
C***** FORTRAN 77 00020815
C***** FM815 00030815
C***** YCEXP - (180) 00040815
C***** 00050815
C***********************************************************************00060815
C***** GENERAL PURPOSE ANS REF 00070815
C***** TEST INTRINSIC FUNCTION CEXP 15.3 00080815
C***** INTRINSIC FUNCTIONS AIMAG AND CABS ASSUMED WORKING TABLE 5 00090815
C***** 00100815
CBB** ********************** BBCCOMNT **********************************00110815
C**** 00120815
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00130815
C**** VERSION 2.1 00140815
C**** 00150815
C**** 00160815
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00170815
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00180815
C**** SOFTWARE STANDARDS VALIDATION GROUP 00190815
C**** BUILDING 225 RM A266 00200815
C**** GAITHERSBURG, MD 20899 00210815
C**** 00220815
C**** 00230815
C**** 00240815
CBE** ********************** BBCCOMNT **********************************00250815
C***** 00260815
C***** S P E C I F I C A T I O N S SEGMENT 180 00270815
COMPLEX AVC, BVC, CVC, ZVCORR 00280815
REAL R2E(2) 00290815
EQUIVALENCE (AVC, R2E) 00300815
C***** 00310815
CBB** ********************** BBCINITA **********************************00320815
C**** SPECIFICATION STATEMENTS 00330815
C**** 00340815
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00350815
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00360815
CBE** ********************** BBCINITA **********************************00370815
CBB** ********************** BBCINITB **********************************00380815
C**** INITIALIZE SECTION 00390815
DATA ZVERS, ZVERSD, ZDATE 00400815
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00410815
DATA ZCOMPL, ZNAME, ZTAPE 00420815
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00430815
DATA ZPROJ, ZTAPED, ZPROG 00440815
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00450815
DATA REMRKS /' '/ 00460815
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00470815
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00480815
C**** 00490815
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00500815
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00510815
CZ03 ZPROG = 'PROGRAM NAME' 00520815
CZ04 ZDATE = 'DATE OF TEST' 00530815
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00540815
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00550815
CZ07 ZNAME = 'NAME OF USER' 00560815
CZ08 ZTAPE = 'TAPE OWNER/ID' 00570815
CZ09 ZTAPED = 'DATE TAPE COPIED' 00580815
C 00590815
IVPASS = 0 00600815
IVFAIL = 0 00610815
IVDELE = 0 00620815
IVINSP = 0 00630815
IVTOTL = 0 00640815
IVTOTN = 0 00650815
ICZERO = 0 00660815
C 00670815
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00680815
I01 = 05 00690815
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00700815
I02 = 06 00710815
C 00720815
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00730815
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00740815
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00750815
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00760815
C 00770815
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00780815
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00790815
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00800815
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00810815
C 00820815
CBE** ********************** BBCINITB **********************************00830815
NUVI = I02 00840815
IVTOTL = 9 00850815
ZPROG = 'FM815' 00860815
CBB** ********************** BBCHED0A **********************************00870815
C**** 00880815
C**** WRITE REPORT TITLE 00890815
C**** 00900815
WRITE (I02, 90002) 00910815
WRITE (I02, 90006) 00920815
WRITE (I02, 90007) 00930815
WRITE (I02, 90008) ZVERS, ZVERSD 00940815
WRITE (I02, 90009) ZPROG, ZPROG 00950815
WRITE (I02, 90010) ZDATE, ZCOMPL 00960815
CBE** ********************** BBCHED0A **********************************00970815
C***** 00980815
C***** HEADER FOR SEGMENT 180 00990815
WRITE(NUVI,18000) 01000815
18000 FORMAT(" ", / " YCEXP - (180) INTRINSIC FUNCTIONS" // 01010815
1 " CEXP (COMPLEX EXPONENTIAL)" // 01020815
2 " ANS REF. - 15.3" ) 01030815
CBB** ********************** BBCHED0B **********************************01040815
C**** WRITE DETAIL REPORT HEADERS 01050815
C**** 01060815
WRITE (I02,90004) 01070815
WRITE (I02,90004) 01080815
WRITE (I02,90013) 01090815
WRITE (I02,90014) 01100815
WRITE (I02,90015) IVTOTL 01110815
CBE** ********************** BBCHED0B **********************************01120815
C***** 01130815
CT001* TEST 1 ZERO 01140815
IVTNUM = 1 01150815
BVC = (0.0, 0.0) 01160815
AVC = CEXP(BVC) 01170815
IF (R2E(1) - 0.99995E+00) 20010, 40012, 40011 01180815
40011 IF (R2E(1) - 0.10001E+01) 40012, 40012, 20010 01190815
40012 IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010 01200815
40010 IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010 01210815
10010 IVPASS = IVPASS + 1 01220815
WRITE (NUVI, 80002) IVTNUM 01230815
GO TO 0011 01240815
20010 IVFAIL = IVFAIL + 1 01250815
ZVCORR = (1.0000000000000, 0.00000000000000) 01260815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 01270815
0011 CONTINUE 01280815
CT002* TEST 2 PURELY REAL NUMBERS -- RESULT AGREES WITH EXP 01290815
IVTNUM = 2 01300815
AVC = CEXP((1.0, 0.0)) 01310815
IF (R2E(1) - 0.27181E+01) 20020, 40022, 40021 01320815
40021 IF (R2E(1) - 0.27185E+01) 40022, 40022, 20020 01330815
40022 IF (R2E(2) + 0.50000E-04) 20020, 10020, 40020 01340815
40020 IF (R2E(2) - 0.50000E-04) 10020, 10020, 20020 01350815
10020 IVPASS = IVPASS + 1 01360815
WRITE (NUVI, 80002) IVTNUM 01370815
GO TO 0021 01380815
20020 IVFAIL = IVFAIL + 1 01390815
ZVCORR = (2.7182818284590, 0.00000000000000) 01400815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 01410815
0021 CONTINUE 01420815
CT003* TEST 3 PURELY REAL NUMBERS -- RESULT AGREES WITH EXP 01430815
IVTNUM = 3 01440815
BVC = (-3.0, 0.0) 01450815
AVC = CEXP(BVC) 01460815
IF (R2E(1) - 0.49784E-01) 20030, 40032, 40031 01470815
40031 IF (R2E(1) - 0.49790E-01) 40032, 40032, 20030 01480815
40032 IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030 01490815
40030 IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030 01500815
10030 IVPASS = IVPASS + 1 01510815
WRITE (NUVI, 80002) IVTNUM 01520815
GO TO 0031 01530815
20030 IVFAIL = IVFAIL + 1 01540815
ZVCORR = (0.04978706836785, 0.00000000000000) 01550815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 01560815
0031 CONTINUE 01570815
C***** TESTS 4 AND 5 - PURELY IMAGINARY NUMBERS--RESULT LIES 01580815
C***** ON UNIT CIRCLE 01590815
CT004* TEST 4 (0,PI) 01600815
IVTNUM = 4 01610815
BVC = (0.0, 3.1415926536) 01620815
AVC = CEXP(BVC * (1.0, 0.0)) 01630815
IF (R2E(1) + 0.10001E+01) 20040, 40042, 40041 01640815
40041 IF (R2E(1) + 0.99995E+00) 40042, 40042, 20040 01650815
40042 IF (R2E(2) + 0.50000E-04) 20040, 10040, 40040 01660815
40040 IF (R2E(2) - 0.50000E-04) 10040, 10040, 20040 01670815
10040 IVPASS = IVPASS + 1 01680815
WRITE (NUVI, 80002) IVTNUM 01690815
GO TO 0041 01700815
20040 IVFAIL = IVFAIL + 1 01710815
ZVCORR = (-1.0000000000000, 0.00000000000000) 01720815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 01730815
0041 CONTINUE 01740815
CT005* TEST 5 (0,-PI/2) 01750815
IVTNUM = 5 01760815
BVC = (0.0, -3.1415926536) 01770815
AVC = CEXP(BVC / (2.0, 0.0)) 01780815
IF (R2E(1) + 0.50000E-04) 20050, 40052, 40051 01790815
40051 IF (R2E(1) - 0.50000E-04) 40052, 40052, 20050 01800815
40052 IF (R2E(2) + 0.10001E+01) 20050, 10050, 40050 01810815
40050 IF (R2E(2) + 0.99995E+00) 10050, 10050, 20050 01820815
10050 IVPASS = IVPASS + 1 01830815
WRITE (NUVI, 80002) IVTNUM 01840815
GO TO 0051 01850815
20050 IVFAIL = IVFAIL + 1 01860815
ZVCORR = (0.00000000000000, -1.0000000000000) 01870815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 01880815
0051 CONTINUE 01890815
CT006* TEST 6 (2.5,PI/4) 01900815
IVTNUM = 6 01910815
AVC = CEXP((1.0, 2.0)) 01920815
IF (R2E(1) + 0.11313E+01) 20060, 40062, 40061 01930815
40061 IF (R2E(1) + 0.11311E+01) 40062, 40062, 20060 01940815
40062 IF (R2E(2) - 0.24716E+01) 20060, 10060, 40060 01950815
40060 IF (R2E(2) - 0.24719E+01) 10060, 10060, 20060 01960815
10060 IVPASS = IVPASS + 1 01970815
WRITE (NUVI, 80002) IVTNUM 01980815
GO TO 0061 01990815
20060 IVFAIL = IVFAIL + 1 02000815
ZVCORR = (-1.1312043837568, 2.4717266720048) 02010815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 02020815
0061 CONTINUE 02030815
CT007* TEST 7 A VARIABLE SUPPLIED TO CEXP 02040815
IVTNUM = 7 02050815
BVC = (-1.75, 4.625) 02060815
AVC = CEXP(BVC) 02070815
IF (R2E(1) + 0.15168E-01) 20070, 40072, 40071 02080815
40071 IF (R2E(1) + 0.15165E-01) 40072, 40072, 20070 02090815
40072 IF (R2E(2) + 0.17312E+00) 20070, 10070, 40070 02100815
40070 IF (R2E(2) + 0.17310E+00) 10070, 10070, 20070 02110815
10070 IVPASS = IVPASS + 1 02120815
WRITE (NUVI, 80002) IVTNUM 02130815
GO TO 0071 02140815
20070 IVFAIL = IVFAIL + 1 02150815
ZVCORR = (-0.01516660638013, -0.17311082425206) 02160815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 02170815
0071 CONTINUE 02180815
CT008* TEST 8 POSITIVE REAL, NEGATIVE IMAGINARY ARGUMENT 02190815
IVTNUM = 8 02200815
AVC = CEXP((5.5, -1.015625)) 02210815
IF (R2E(1) - 0.12896E+03) 20080, 40082, 40081 02220815
40081 IF (R2E(1) - 0.12898E+03) 40082, 40082, 20080 02230815
40082 IF (R2E(2) + 0.20796E+03) 20080, 10080, 40080 02240815
40080 IF (R2E(2) + 0.20793E+03) 10080, 10080, 20080 02250815
10080 IVPASS = IVPASS + 1 02260815
WRITE (NUVI, 80002) IVTNUM 02270815
GO TO 0081 02280815
20080 IVFAIL = IVFAIL + 1 02290815
ZVCORR = (128.97440219594, -207.94168724284) 02300815
WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 02310815
0081 CONTINUE 02320815
CT009* TEST 9 THE FUNCTION TOGETHER WITH AIMAG AND CABS 02330815
IVTNUM = 9 02340815
BVC = (10.0, 3.1415926536) 02350815
CVC = CEXP(BVC / (4.0, 0.0)) 02360815
AVS = (AIMAG(CVC) / CABS(CVC)) ** 2 02370815
IF (AVS - 0.49997E+00) 20090, 10090, 40090 02380815
40090 IF (AVS - 0.50003E+00) 10090, 10090, 20090 02390815
10090 IVPASS = IVPASS + 1 02400815
WRITE (NUVI, 80002) IVTNUM 02410815
GO TO 0091 02420815
20090 IVFAIL = IVFAIL + 1 02430815
RVCORR = 0.5000000 02440815
WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 02450815
0091 CONTINUE 02460815
C***** 02470815
CBB** ********************** BBCSUM0 **********************************02480815
C**** WRITE OUT TEST SUMMARY 02490815
C**** 02500815
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02510815
WRITE (I02, 90004) 02520815
WRITE (I02, 90014) 02530815
WRITE (I02, 90004) 02540815
WRITE (I02, 90020) IVPASS 02550815
WRITE (I02, 90022) IVFAIL 02560815
WRITE (I02, 90024) IVDELE 02570815
WRITE (I02, 90026) IVINSP 02580815
WRITE (I02, 90028) IVTOTN, IVTOTL 02590815
CBE** ********************** BBCSUM0 **********************************02600815
CBB** ********************** BBCFOOT0 **********************************02610815
C**** WRITE OUT REPORT FOOTINGS 02620815
C**** 02630815
WRITE (I02,90016) ZPROG, ZPROG 02640815
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 02650815
WRITE (I02,90019) 02660815
CBE** ********************** BBCFOOT0 **********************************02670815
CBB** ********************** BBCFMT0A **********************************02680815
C**** FORMATS FOR TEST DETAIL LINES 02690815
C**** 02700815
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 02710815
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 02720815
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 02730815
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 02740815
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 02750815
1I6,/," ",15X,"CORRECT= " ,I6) 02760815
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02770815
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 02780815
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02790815
1A21,/," ",16X,"CORRECT= " ,A21) 02800815
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 02810815
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 02820815
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 02830815
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 02840815
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 02850815
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 02860815
80050 FORMAT (" ",48X,A31) 02870815
CBE** ********************** BBCFMT0A **********************************02880815
CBB** ********************** BBCFMAT1 **********************************02890815
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE 02900815
C**** 02910815
80031 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02920815
1D17.10,/," ",16X,"CORRECT= " ,D17.10) 02930815
80033 FORMAT (" ",16X,"COMPUTED= " ,D17.10,10X,A31) 02940815
80035 FORMAT (" ",16X,"CORRECT= " ,D17.10,10X,A31) 02950815
80037 FORMAT (" ",16X,"COMPUTED= " ,"(",E12.5,", ",E12.5,")",6X,A31) 02960815
80039 FORMAT (" ",16X,"CORRECT= " ,"(",E12.5,", ",E12.5,")",6X,A31) 02970815
80041 FORMAT (" ",16X,"COMPUTED= " ,"(",F12.5,", ",F12.5,")",6X,A31) 02980815
80043 FORMAT (" ",16X,"CORRECT= " ,"(",F12.5,", ",F12.5,")",6X,A31) 02990815
80045 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03000815
1"(",F12.5,", ",F12.5,")"/," ",16X,"CORRECT= " , 03010815
2"(",F12.5,", ",F12.5,")") 03020815
CBE** ********************** BBCFMAT1 **********************************03030815
CBB** ********************** BBCFMT0B **********************************03040815
C**** FORMAT STATEMENTS FOR PAGE HEADERS 03050815
C**** 03060815
90002 FORMAT ("1") 03070815
90004 FORMAT (" ") 03080815
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03090815
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03100815
90008 FORMAT (" ",21X,A13,A17) 03110815
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03120815
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03130815
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03140815
1 7X,"REMARKS",24X) 03150815
90014 FORMAT (" ","----------------------------------------------" , 03160815
1 "---------------------------------" ) 03170815
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03180815
C**** 03190815
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03200815
C**** 03210815
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03220815
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03230815
1 A13) 03240815
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03250815
C**** 03260815
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03270815
C**** 03280815
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03290815
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03300815
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03310815
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03320815
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03330815
CBE** ********************** BBCFMT0B **********************************03340815
C***** 03350815
C***** END OF TEST SEGMENT 180 03360815
STOP 03370815
END 03380815
03390815