C*********************************************************************** C***** FORTRAN 77 C***** FM805 YDDIM - (164) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DDIM AND PROD--POSITIVE 15.3 C***** DIFFERENCE AND DOUBLE PRECISION PRODUCT, RESP. (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 164 DOUBLE PRECISION DSAVD, DSBVD, DSDVD, DSEVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' ZDATE = ' DEC. 1983 ' ZCOMPL = ' ICL VME FORTRAN77 ' ZPROJ = ' LANG. CENTRE' ZNAME = 'ICL ' ZTAPE = 'M999 ' ZTAPED = '831005 ' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 18 ZPROG = 'FM805' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 164 WRITE (NUVI,16401) 16401 FORMAT (1H ,// 1X,36HYDDIM - (164) INTRINSIC FUNCTIONS-- //16X, 1 26HDDIM (POSITIVE DIFFERENCE)/,16X, 2 20HDPROD (D.P. PRODUCT)// 3 2X,15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF DDIM C***** WRITE(NUVI, 16402) 16402 FORMAT(/ 8X, 12HTEST OF DDIM) CT001* TEST 1 BOTH VALUES EQUAL IVTNUM = 1 DSBVD = 0.25D0 DSDVD = 0.25D0 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DSAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0011 CONTINUE CT002* TEST 2 BOTH VALUES EQUAL, INTEGRAL VALUES IVTNUM = 2 DSBVD = 2.0D0 DSDVD = 2.0D0 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20020, 10020, 40020 40020 IF (DSAVD - 5.0D-10) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0021 CONTINUE CT003* TEST 3 FIRST VALUE LESS THAN SECOND IVTNUM = 3 DSBVD = 0.25D1 DSDVD = 0.55D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20030, 10030, 40030 40030 IF (DSAVD - 5.0D-10) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0031 CONTINUE CT004* TEST 4 FIRST VALUE GREATER THAN SECOND IVTNUM = 4 DSBVD = 0.55D1 DSDVD = 0.25D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD - 2.999999998D0) 20040, 10040, 40040 40040 IF (DSAVD - 3.000000002D0) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 3.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0041 CONTINUE CT005* TEST 5 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 5 DSBVD = -0.25D1 DSDVD = -0.25D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20050, 10050, 40050 40050 IF (DSAVD - 5.0D-10) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE GREATER THAN SECOND, BOTH NEGATIVE IVTNUM = 6 DSBVD = -0.25D1 DSDVD = -0.55D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD - 2.999999998D0) 20060, 10060, 40060 40060 IF (DSAVD - 3.000000002D0) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 3.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0061 CONTINUE CT007* TEST 7 FIRST VALUE POSITIVE, SECOND NEGATIVE IVTNUM = 7 DSBVD = 0.55D1 DSDVD = -0.25D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD - 7.999999996D0) 20070, 10070, 40070 40070 IF (DSAVD - 8.000000004D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 8.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0071 CONTINUE CT008* TEST 8 ARITHMETIC EXPRESSION PRESENTED TO DDIM IVTNUM = 8 DSDVD = 0.25D1 DSEVD = 0.125D1 DSAVD = DDIM(DSDVD / DSEVD, DSDVD * DSEVD) IF (DSAVD + 5.0D-10) 20080, 10080, 40080 40080 IF (DSAVD - 5.0D-10) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0081 CONTINUE C***** C***** TEST OF DPROD C***** WRITE(NUVI, 16404) REMRKS = '+ OR - 0.00005' 16404 FORMAT(// 8X, 13HTEST OF DPROD) CT009* TEST 9 PAIR OF VALUES, ONE OF WHICH IS ZERO IVTNUM = 9 RSAVS = 0.0 RSBVS = 2.0 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 5.0D-5) 20090, 10090, 40090 40090 IF (DSAVD - 5.0D-5) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0091 CONTINUE CT010* TEST 10 PAIR OF VALUES, ONE OF WHICH IS ONE IVTNUM = 10 RSAVS = 1.0 RSBVS = 2.0 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 1.9999D0) 20100, 10100, 40100 40100 IF (DSAVD - 2.0001D0) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 2.0D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0101 CONTINUE CT011* TEST 11 PAIR OF NON-ZERO VALUES IVTNUM = 11 RSAVS = 3.333333 RSBVS = 2.3948094 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 7.9823D0) 20110, 10110, 40110 40110 IF (DSAVD - 7.9831D0) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 7.982697202D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0111 CONTINUE CT012* TEST 12 ONE POSITIVE, ONE NEGATIVE IVTNUM = 12 RSAVS = 0.123456 RSBVS = -2.98765 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 3.6887D-1) 20120, 10120, 40120 40120 IF (DSAVD + 3.6882D-1) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -3.688433184D-1 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0121 CONTINUE CT013* TEST 13 ONE VALUE ONE(1), ONE NEGATIVE IVTNUM = 13 RSAVS = 1.0834001 RSBVS = -2.034985 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 2.2049D0) 20130, 10130, 40130 40130 IF (DSAVD + 2.2045D0) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = -2.204702953D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0131 CONTINUE CT014* TEST 14 PAIR OF NEGATIVE VALUES IVTNUM = 14 RSAVS = -3.077734 RSBVS = -2.348343 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 7.2272D0) 20140, 10140, 40140 40140 IF (DSAVD - 7.2280D0) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 7.227575095D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0141 CONTINUE CT015* TEST 15 ONE POSITIVE VALUE, ONE NEGATIVE VALUE IVTNUM = 15 RSAVS = 3.3333324 RSBVS = -2.343953 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 7.8136D0) 20150, 10150, 40150 40150 IF (DSAVD + 7.8127D0) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = -7.813174479D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0151 CONTINUE CT016* TEST 16 ARITHMETIC EXPRESSION PRESENTED TO DPROD IVTNUM = 16 RSAVS = 1.555674 RSBVS = 2.00012 DSAVD = DPROD(RSAVS - RSBVS, RSAVS + RSBVS) IF (DSAVD + 1.5805D0) 20160, 10160, 40160 40160 IF (DSAVD + 1.5802D0) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = -1.580358420D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0161 CONTINUE CT017* TEST 17 DPROD FORMS THE ARGUMENTS TO DDIM IVTNUM = 17 DSAVD = DDIM(DPROD(0.4, 2.0), DPROD(3.0, 0.1)) IF (DSAVD - 0.49997D0) 20170, 10170, 40170 40170 IF (DSAVD - 0.50003D0) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = 0.5D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0171 CONTINUE CT018* TEST 18 ARGUMENTS WITH HIGH AND LOW MAGNITUDES IVTNUM = 18 RSAVS = 1.23456E-33 RSBVS = 1.23456E+34 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 1.5240D1) 20180, 10180, 40180 40180 IF (DSAVD - 1.5242D1) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 1.524138394D1 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0181 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 164 STOP END