blob: 9dd767a2818c86e00e65dddffe154843c997349e [file] [log] [blame]
PROGRAM FM810
C***********************************************************************00010810
C***** FORTRAN 77 00020810
C***** FM810 YDMMX - (173) 00030810
C***** 00040810
C***********************************************************************00050810
C***** GENERAL PURPOSE ANS REF 00060810
C***** TESTS THE USE OF INTEGER, REAL, DOUBLE PRECISION, 15.3 00070810
C***** AND MIXED MODE EXPRESSIONS CONTAINING REFERENCES TO 15.10 00080810
C***** THE INTRINSIC FUNCTIONS OF THE FULL LANGUAGE 6.1.4 00090810
C***** 00100810
C***** GENERAL COMMENTS 00110810
C***** SEGMENTS TESTING XINT, XREAL, XAINT, XABS, XAMOD, 00120810
C***** XSIGN, XDIM, XMAX, XMIN, YIDINT, YSNGL 00130810
C***** YDINT, YDABS, YCABS, YDMOD, YDSIGN, 00140810
C***** YDMAX1, YDMIN1, YDBLE, YCONJG ASSUMED WORKING 00150810
CBB** ********************** BBCCOMNT **********************************00160810
C**** 00170810
C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00180810
C**** VERSION 2.1 00190810
C**** 00200810
C**** 00210810
C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00220810
C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00230810
C**** SOFTWARE STANDARDS VALIDATION GROUP 00240810
C**** BUILDING 225 RM A266 00250810
C**** GAITHERSBURG, MD 20899 00260810
C**** 00270810
C**** 00280810
C**** 00290810
CBE** ********************** BBCCOMNT **********************************00300810
C***** 00310810
C***** S P E C I F I C A T I O N S SEGMENT 173 00320810
DOUBLE PRECISION DXAVD,DXBVD,DXDVD,DXEVD,DXFVD,DXGVD,DVCORR 00330810
CBB** ********************** BBCINITA **********************************00340810
C**** SPECIFICATION STATEMENTS 00350810
C**** 00360810
CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00370810
1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00380810
CBE** ********************** BBCINITA **********************************00390810
CBB** ********************** BBCINITB **********************************00400810
C**** INITIALIZE SECTION 00410810
DATA ZVERS, ZVERSD, ZDATE 00420810
1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00430810
DATA ZCOMPL, ZNAME, ZTAPE 00440810
1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00450810
DATA ZPROJ, ZTAPED, ZPROG 00460810
1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00470810
DATA REMRKS /' '/ 00480810
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00490810
C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00500810
C**** 00510810
CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00520810
CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00530810
CZ03 ZPROG = 'PROGRAM NAME' 00540810
CZ04 ZDATE = 'DATE OF TEST' 00550810
CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00560810
CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00570810
CZ07 ZNAME = 'NAME OF USER' 00580810
CZ08 ZTAPE = 'TAPE OWNER/ID' 00590810
CZ09 ZTAPED = 'DATE TAPE COPIED' 00600810
C 00610810
IVPASS = 0 00620810
IVFAIL = 0 00630810
IVDELE = 0 00640810
IVINSP = 0 00650810
IVTOTL = 0 00660810
IVTOTN = 0 00670810
ICZERO = 0 00680810
C 00690810
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00700810
I01 = 05 00710810
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00720810
I02 = 06 00730810
C 00740810
CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00750810
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00760810
CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00770810
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00780810
C 00790810
CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00800810
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00810810
CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00820810
C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00830810
C 00840810
CBE** ********************** BBCINITB **********************************00850810
NUVI = I02 00860810
IVTOTL = 10 00870810
ZPROG = 'FM810' 00880810
CBB** ********************** BBCHED0A **********************************00890810
C**** 00900810
C**** WRITE REPORT TITLE 00910810
C**** 00920810
WRITE (I02, 90002) 00930810
WRITE (I02, 90006) 00940810
WRITE (I02, 90007) 00950810
WRITE (I02, 90008) ZVERS, ZVERSD 00960810
WRITE (I02, 90009) ZPROG, ZPROG 00970810
WRITE (I02, 90010) ZDATE, ZCOMPL 00980810
CBE** ********************** BBCHED0A **********************************00990810
C***** 01000810
C***** 01010810
C***** HEADER FOR SEGMENT 173 WRITTEN 01020810
WRITE (NUVI,17301) 01030810
17301 FORMAT(" ", //1X, "YDMMX - (173) INTRINSIC FUNCTIONS--" // 01040810
1 16X, "INTEGER, REAL AND D.P." /, 01050810
2 16X, "AND MIXED MODE EXPRESSIONS" // 01060810
3 2X, "ANS REF. - 15.3, 15.10, 6.1.4" ) 01070810
CBB** ********************** BBCHED0B **********************************01080810
C**** WRITE DETAIL REPORT HEADERS 01090810
C**** 01100810
WRITE (I02,90004) 01110810
WRITE (I02,90004) 01120810
WRITE (I02,90013) 01130810
WRITE (I02,90014) 01140810
WRITE (I02,90015) IVTOTL 01150810
CBE** ********************** BBCHED0B **********************************01160810
C***** 01170810
CT001* TEST 1 01180810
IVTNUM = 1 01190810
DXBVD = 3.5D0 01200810
IXAVI = IDINT(DXBVD) + 2 01210810
IF (IXAVI - 5) 20010, 10010, 20010 01220810
10010 IVPASS = IVPASS + 1 01230810
WRITE (NUVI, 80002) IVTNUM 01240810
GO TO 0011 01250810
20010 IVFAIL = IVFAIL + 1 01260810
IVCORR = 5 01270810
WRITE (NUVI, 80010) IVTNUM, IXAVI, IVCORR 01280810
0011 CONTINUE 01290810
CT002* TEST 2 01300810
IVTNUM = 2 01310810
DXBVD = 5.25D0 01320810
RXAVS = SNGL(DXBVD) * 3.0 01330810
IF (RXAVS - 15.749) 20020, 10020, 40020 01340810
40020 IF (RXAVS - 15.751) 10020, 10020, 20020 01350810
10020 IVPASS = IVPASS + 1 01360810
WRITE (NUVI, 80002) IVTNUM 01370810
GO TO 0021 01380810
20020 IVFAIL = IVFAIL + 1 01390810
RVCORR = 15.75 01400810
WRITE (NUVI, 80012) IVTNUM, RXAVS, RVCORR 01410810
0021 CONTINUE 01420810
CT003* TEST 3 01430810
IVTNUM = 3 01440810
DXBVD = 3.2D0 01450810
DXAVD = DINT(DXBVD) ** 2.0 01460810
IF (DXAVD - 8.999999995D0) 20030, 10030, 40030 01470810
40030 IF (DXAVD - 9.000000005D0) 10030, 10030, 20030 01480810
10030 IVPASS = IVPASS + 1 01490810
WRITE (NUVI, 80002) IVTNUM 01500810
GO TO 0031 01510810
20030 IVFAIL = IVFAIL + 1 01520810
DVCORR = 9.0D0 01530810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 01540810
0031 CONTINUE 01550810
CT004* TEST 4 01560810
IVTNUM = 4 01570810
DXBVD = 3.2D0 01580810
DXAVD = DNINT(DXBVD) + 2.5 01590810
IF (DXAVD - 5.499999997D0) 20040, 10040, 40040 01600810
40040 IF (DXAVD - 5.500000003D0) 10040, 10040, 20040 01610810
10040 IVPASS = IVPASS + 1 01620810
WRITE (NUVI, 80002) IVTNUM 01630810
GO TO 0041 01640810
20040 IVFAIL = IVFAIL + 1 01650810
DVCORR = 5.5D0 01660810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 01670810
0041 CONTINUE 01680810
CT005* TEST 5 01690810
IVTNUM = 5 01700810
DXBVD = 3.5D0 01710810
RXAVS = IDINT(DXBVD) * 2.5 01720810
IF (RXAVS - 7.4996) 20050, 10050, 40050 01730810
40050 IF (RXAVS - 7.5004) 10050, 10050, 20050 01740810
10050 IVPASS = IVPASS + 1 01750810
WRITE (NUVI, 80002) IVTNUM 01760810
GO TO 0051 01770810
20050 IVFAIL = IVFAIL + 1 01780810
RVCORR = 7.5 01790810
WRITE (NUVI, 80012) IVTNUM, RXAVS, RVCORR 01800810
0051 CONTINUE 01810810
CT006* TEST 6 01820810
IVTNUM = 6 01830810
DXBVD = -2.5D0 01840810
DXAVD = DABS(DXBVD) * 2 01850810
IF (DXAVD - 4.999999997D0) 20060, 10060, 40060 01860810
40060 IF (DXAVD - 5.000000003D0) 10060, 10060, 20060 01870810
10060 IVPASS = IVPASS + 1 01880810
WRITE (NUVI, 80002) IVTNUM 01890810
GO TO 0061 01900810
20060 IVFAIL = IVFAIL + 1 01910810
DVCORR = 5.0D0 01920810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 01930810
0061 CONTINUE 01940810
CT007* TEST 7 01950810
IVTNUM = 7 01960810
DXBVD = 5.0D0 01970810
DXDVD = 2.0D0 01980810
DXEVD = 3.0D0 01990810
DXFVD = -1.0D0 02000810
DXAVD = DMOD(DXBVD, DXDVD) * 3 + DSIGN(DXEVD, DXFVD) 02010810
IF (DXAVD + 5.0D-10) 20070, 10070, 40070 02020810
40070 IF (DXAVD - 5.0D-10) 10070, 10070, 20070 02030810
10070 IVPASS = IVPASS + 1 02040810
WRITE (NUVI, 80002) IVTNUM 02050810
GO TO 0071 02060810
20070 IVFAIL = IVFAIL + 1 02070810
DVCORR = 0.0D0 02080810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 02090810
0071 CONTINUE 02100810
CT008* TEST 8 02110810
IVTNUM = 8 02120810
DXBVD = 1.5D1 02130810
DXDVD = 0.5D1 02140810
RXBVS = 5.0 02150810
RXDVS = 2.0 02160810
DXAVD = DDIM(DXBVD, DXDVD) / DPROD(RXBVS, RXDVS) 02170810
IF (DXAVD - 0.9999999995D0) 20080, 10080, 40080 02180810
40080 IF (DXAVD - 1.000000001D0) 10080, 10080, 20080 02190810
10080 IVPASS = IVPASS + 1 02200810
WRITE (NUVI, 80002) IVTNUM 02210810
GO TO 0081 02220810
20080 IVFAIL = IVFAIL + 1 02230810
DVCORR = 1.0D0 02240810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 02250810
0081 CONTINUE 02260810
CT009* TEST 9 02270810
IVTNUM = 9 02280810
DXBVD = 5.5D0 02290810
DXDVD = 2.5D0 02300810
DXEVD = 1.0D0 02310810
RXBVS = 1.0 02320810
DXAVD = (10 - DMAX1(DXBVD, DXDVD)) * (DMIN1(DXEVD, DXDVD) 02330810
1 + DBLE(RXBVS)) 02340810
IF (DXAVD - 8.999999995D0) 20090, 10090, 40090 02350810
40090 IF (DXAVD - 9.000000005D0) 10090, 10090, 20090 02360810
10090 IVPASS = IVPASS + 1 02370810
WRITE (NUVI, 80002) IVTNUM 02380810
GO TO 0091 02390810
20090 IVFAIL = IVFAIL + 1 02400810
DVCORR = 9.0D0 02410810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 02420810
0091 CONTINUE 02430810
CT010* TEST 10 02440810
IVTNUM = 10 02450810
DXBVD = 0.635D2 02460810
RXBVS = 5.0 02470810
DXDVD = 5.7D0 02480810
DXEVD = -6.0D0 02490810
DXFVD = 1.0D0 02500810
DXGVD = 3.0D0 02510810
DXAVD = (IDINT(DXBVD) + 1.0) / (7 - DBLE(RXBVS)) - 02520810
1 (DINT(DXDVD) + 5 + 5.5) * (DSIGN(DXEVD, DXFVD) / 02530810
2 SNGL(DXGVD)) 02540810
IF (DXAVD - 0.9999999995D0) 20100, 10100, 40100 02550810
40100 IF (DXAVD - 1.000000001D0) 10100, 10100, 20100 02560810
10100 IVPASS = IVPASS + 1 02570810
WRITE (NUVI, 80002) IVTNUM 02580810
GO TO 0101 02590810
20100 IVFAIL = IVFAIL + 1 02600810
DVCORR = 1.0D0 02610810
WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 02620810
0101 CONTINUE 02630810
C***** 02640810
CBB** ********************** BBCSUM0 **********************************02650810
C**** WRITE OUT TEST SUMMARY 02660810
C**** 02670810
IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 02680810
WRITE (I02, 90004) 02690810
WRITE (I02, 90014) 02700810
WRITE (I02, 90004) 02710810
WRITE (I02, 90020) IVPASS 02720810
WRITE (I02, 90022) IVFAIL 02730810
WRITE (I02, 90024) IVDELE 02740810
WRITE (I02, 90026) IVINSP 02750810
WRITE (I02, 90028) IVTOTN, IVTOTL 02760810
CBE** ********************** BBCSUM0 **********************************02770810
CBB** ********************** BBCFOOT0 **********************************02780810
C**** WRITE OUT REPORT FOOTINGS 02790810
C**** 02800810
WRITE (I02,90016) ZPROG, ZPROG 02810810
WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 02820810
WRITE (I02,90019) 02830810
CBE** ********************** BBCFOOT0 **********************************02840810
CBB** ********************** BBCFMT0A **********************************02850810
C**** FORMATS FOR TEST DETAIL LINES 02860810
C**** 02870810
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 02880810
80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 02890810
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 02900810
80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 02910810
80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 02920810
1I6,/," ",15X,"CORRECT= " ,I6) 02930810
80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02940810
1E12.5,/," ",16X,"CORRECT= " ,E12.5) 02950810
80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 02960810
1A21,/," ",16X,"CORRECT= " ,A21) 02970810
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 02980810
80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 02990810
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 03000810
80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 03010810
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 03020810
80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 03030810
80050 FORMAT (" ",48X,A31) 03040810
CBE** ********************** BBCFMT0A **********************************03050810
CBB** ********************** BBCFMAT1 **********************************03060810
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE 03070810
C**** 03080810
80031 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03090810
1D17.10,/," ",16X,"CORRECT= " ,D17.10) 03100810
80033 FORMAT (" ",16X,"COMPUTED= " ,D17.10,10X,A31) 03110810
80035 FORMAT (" ",16X,"CORRECT= " ,D17.10,10X,A31) 03120810
80037 FORMAT (" ",16X,"COMPUTED= " ,"(",E12.5,", ",E12.5,")",6X,A31) 03130810
80039 FORMAT (" ",16X,"CORRECT= " ,"(",E12.5,", ",E12.5,")",6X,A31) 03140810
80041 FORMAT (" ",16X,"COMPUTED= " ,"(",F12.5,", ",F12.5,")",6X,A31) 03150810
80043 FORMAT (" ",16X,"CORRECT= " ,"(",F12.5,", ",F12.5,")",6X,A31) 03160810
80045 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 03170810
1"(",F12.5,", ",F12.5,")"/," ",16X,"CORRECT= " , 03180810
2"(",F12.5,", ",F12.5,")") 03190810
CBE** ********************** BBCFMAT1 **********************************03200810
CBB** ********************** BBCFMT0B **********************************03210810
C**** FORMAT STATEMENTS FOR PAGE HEADERS 03220810
C**** 03230810
90002 FORMAT ("1") 03240810
90004 FORMAT (" ") 03250810
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03260810
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03270810
90008 FORMAT (" ",21X,A13,A17) 03280810
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 03290810
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 03300810
90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 03310810
1 7X,"REMARKS",24X) 03320810
90014 FORMAT (" ","----------------------------------------------" , 03330810
1 "---------------------------------" ) 03340810
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 03350810
C**** 03360810
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 03370810
C**** 03380810
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 03390810
90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 03400810
1 A13) 03410810
90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 03420810
C**** 03430810
C**** FORMAT STATEMENTS FOR RUN SUMMARY 03440810
C**** 03450810
90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 03460810
90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 03470810
90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 03480810
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 03490810
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 03500810
CBE** ********************** BBCFMT0B **********************************03510810
C***** END OF TEST SEGMENT 173 03520810
STOP 03530810
END 03540810
03550810