PROGRAM FM361 C***********************************************************************00010361 C***** FORTRAN 77 00020361 C***** FM361 XMAX - (165) 00030361 C***** 00040361 C***********************************************************************00050361 C***** GENERAL PURPOSE SUBSET REF00060361 C***** TEST OF INTRINSIC FUNCTIONS AMAX0,AMAX1,MAX0,MAX1 15.3 00070361 C***** CHOOSING LARGEST VALUE (TABLE 5)00080361 C***** 00090361 CBB** ********************** BBCCOMNT **********************************00100361 C**** 00110361 C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM 00120361 C**** VERSION 2.1 00130361 C**** 00140361 C**** 00150361 C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00160361 C**** NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00170361 C**** SOFTWARE STANDARDS VALIDATION GROUP 00180361 C**** BUILDING 225 RM A266 00190361 C**** GAITHERSBURG, MD 20899 00200361 C**** 00210361 C**** 00220361 C**** 00230361 CBE** ********************** BBCCOMNT **********************************00240361 CBB** ********************** BBCINITA **********************************00250361 C**** SPECIFICATION STATEMENTS 00260361 C**** 00270361 CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 00280361 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 00290361 CBE** ********************** BBCINITA **********************************00300361 CBB** ********************** BBCINITB **********************************00310361 C**** INITIALIZE SECTION 00320361 DATA ZVERS, ZVERSD, ZDATE 00330361 1 /'VERSION 2.1 ', '93/10/21*21.02.00', '*NO DATE*TIME'/ 00340361 DATA ZCOMPL, ZNAME, ZTAPE 00350361 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ 00360361 DATA ZPROJ, ZTAPED, ZPROG 00370361 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ 00380361 DATA REMRKS /' '/ 00390361 C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED 00400361 C**** FOR IDENTIFYING THE TEST ENVIRONMENT 00410361 C**** 00420361 CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' 00430361 CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' 00440361 CZ03 ZPROG = 'PROGRAM NAME' 00450361 CZ04 ZDATE = 'DATE OF TEST' 00460361 CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' 00470361 CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' 00480361 CZ07 ZNAME = 'NAME OF USER' 00490361 CZ08 ZTAPE = 'TAPE OWNER/ID' 00500361 CZ09 ZTAPED = 'DATE TAPE COPIED' 00510361 C 00520361 IVPASS = 0 00530361 IVFAIL = 0 00540361 IVDELE = 0 00550361 IVINSP = 0 00560361 IVTOTL = 0 00570361 IVTOTN = 0 00580361 ICZERO = 0 00590361 C 00600361 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00610361 I01 = 05 00620361 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00630361 I02 = 06 00640361 C 00650361 CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00660361 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00670361 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS 00680361 C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. 00690361 C 00700361 CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). 00710361 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 00720361 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS 00730361 C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. 00740361 C 00750361 CBE** ********************** BBCINITB **********************************00760361 NUVI = I02 00770361 IVTOTL = 48 00780361 ZPROG = 'FM361' 00790361 CBB** ********************** BBCHED0A **********************************00800361 C**** 00810361 C**** WRITE REPORT TITLE 00820361 C**** 00830361 WRITE (I02, 90002) 00840361 WRITE (I02, 90006) 00850361 WRITE (I02, 90007) 00860361 WRITE (I02, 90008) ZVERS, ZVERSD 00870361 WRITE (I02, 90009) ZPROG, ZPROG 00880361 WRITE (I02, 90010) ZDATE, ZCOMPL 00890361 CBE** ********************** BBCHED0A **********************************00900361 C***** 00910361 C***** HEADER FOR SEGMENT 165 00920361 WRITE (NUVI,16501) 00930361 16501 FORMAT (" ", // 2X,"XMAX - (165) INTRINSIC FUNCTIONS-- " //13X,00940361 1 "AMAX0, AMAX1, MAX0, MAX1 " /13X, 00950361 2 "(CHOOSING LARGEST VALUE)" //2X, 00960361 3 "SUBSET REF. - 15.3" ) 00970361 CBB** ********************** BBCHED0B **********************************00980361 C**** WRITE DETAIL REPORT HEADERS 00990361 C**** 01000361 WRITE (I02,90004) 01010361 WRITE (I02,90004) 01020361 WRITE (I02,90013) 01030361 WRITE (I02,90014) 01040361 WRITE (I02,90015) IVTOTL 01050361 CBE** ********************** BBCHED0B **********************************01060361 C***** 01070361 C***** TEST OF AMAX0 01080361 C***** 01090361 WRITE(NUVI, 16502) 01100361 16502 FORMAT (/ 8X, "TEST OF AMAX0" ) 01110361 CT001* TEST 1 BOTH ZEROES 01120361 IVTNUM = 1 01130361 IHBVI = 0 01140361 IHDVI = 0 01150361 RHAVS = AMAX0(IHBVI,IHDVI) 01160361 IF (RHAVS + 0.00005) 20010, 10010, 40010 01170361 40010 IF (RHAVS - 0.00005) 10010, 10010, 20010 01180361 10010 IVPASS = IVPASS + 1 01190361 WRITE (NUVI, 80002) IVTNUM 01200361 GO TO 0011 01210361 20010 IVFAIL = IVFAIL + 1 01220361 RVCORR = 0.0 01230361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 01240361 0011 CONTINUE 01250361 CT002* TEST 2 ONE NON-ZERO, ONE ZERO 01260361 IVTNUM = 2 01270361 IHBVI = 6 01280361 IHDVI = 0 01290361 RHAVS = AMAX0(IHBVI,IHDVI) 01300361 IF (RHAVS - 5.9997) 20020, 10020, 40020 01310361 40020 IF (RHAVS - 6.0003) 10020, 10020, 20020 01320361 10020 IVPASS = IVPASS + 1 01330361 WRITE (NUVI, 80002) IVTNUM 01340361 GO TO 0021 01350361 20020 IVFAIL = IVFAIL + 1 01360361 RVCORR = 6.0 01370361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 01380361 0021 CONTINUE 01390361 CT003* TEST 3 BOTH VALUES EQUAL 01400361 IVTNUM = 3 01410361 IHBVI = 7 01420361 IHDVI = 7 01430361 RHAVS = AMAX0(IHBVI,IHDVI) 01440361 IF (RHAVS - 6.9996) 20030, 10030, 40030 01450361 40030 IF (RHAVS - 7.0004) 10030, 10030, 20030 01460361 10030 IVPASS = IVPASS + 1 01470361 WRITE (NUVI, 80002) IVTNUM 01480361 GO TO 0031 01490361 20030 IVFAIL = IVFAIL + 1 01500361 RVCORR = 7.0 01510361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 01520361 0031 CONTINUE 01530361 CT004* TEST 4 UNEQUAL VALUES, BOTH POSITIVE 01540361 IVTNUM = 4 01550361 IHBVI = 7 01560361 IHDVI = 5 01570361 RHAVS = AMAX0(IHBVI,IHDVI) 01580361 IF (RHAVS - 6.9996) 20040, 10040, 40040 01590361 40040 IF (RHAVS - 7.0004) 10040, 10040, 20040 01600361 10040 IVPASS = IVPASS + 1 01610361 WRITE (NUVI, 80002) IVTNUM 01620361 GO TO 0041 01630361 20040 IVFAIL = IVFAIL + 1 01640361 RVCORR = 7.0 01650361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 01660361 0041 CONTINUE 01670361 CT005* TEST 5 ONE NEGATIVE, ONE ZERO 01680361 IVTNUM = 5 01690361 IHBVI = -6 01700361 IHDVI = 0 01710361 RHAVS = AMAX0(IHBVI,IHDVI) 01720361 IF (RHAVS + 0.00005) 20050, 10050, 40050 01730361 40050 IF (RHAVS - 0.00005) 10050, 10050, 20050 01740361 10050 IVPASS = IVPASS + 1 01750361 WRITE (NUVI, 80002) IVTNUM 01760361 GO TO 0051 01770361 20050 IVFAIL = IVFAIL + 1 01780361 RVCORR = 0.0 01790361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 01800361 0051 CONTINUE 01810361 CT006* TEST 6 BOTH VALUES EQUAL, BOTH NEGATIVE 01820361 IVTNUM = 6 01830361 IHBVI = -7 01840361 IHDVI = -7 01850361 RHAVS = AMAX0(IHBVI,IHDVI) 01860361 IF (RHAVS + 7.0004) 20060, 10060, 40060 01870361 40060 IF (RHAVS + 6.9996) 10060, 10060, 20060 01880361 10060 IVPASS = IVPASS + 1 01890361 WRITE (NUVI, 80002) IVTNUM 01900361 GO TO 0061 01910361 20060 IVFAIL = IVFAIL + 1 01920361 RVCORR = -7.0 01930361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 01940361 0061 CONTINUE 01950361 CT007* TEST 7 BOTH VALUES NOT EQUAL, BOTH NEGATIVE 01960361 IVTNUM = 7 01970361 IHBVI = -7 01980361 IHDVI = -5 01990361 RHAVS = AMAX0(IHBVI,IHDVI) 02000361 IF (RHAVS + 5.0003) 20070, 10070, 40070 02010361 40070 IF (RHAVS + 4.9997) 10070, 10070, 20070 02020361 10070 IVPASS = IVPASS + 1 02030361 WRITE (NUVI, 80002) IVTNUM 02040361 GO TO 0071 02050361 20070 IVFAIL = IVFAIL + 1 02060361 RVCORR = -5.0 02070361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 02080361 0071 CONTINUE 02090361 CT008* TEST 8 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY A MINUS SIGN 02100361 IVTNUM = 8 02110361 IHDVI = 6 02120361 IHEVI = 0 02130361 RHAVS = AMAX0(IHDVI, -IHEVI) 02140361 IF (RHAVS - 5.9997) 20080, 10080, 40080 02150361 40080 IF (RHAVS - 6.0003) 10080, 10080, 20080 02160361 10080 IVPASS = IVPASS + 1 02170361 WRITE (NUVI, 80002) IVTNUM 02180361 GO TO 0081 02190361 20080 IVFAIL = IVFAIL + 1 02200361 RVCORR = 6.0 02210361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 02220361 0081 CONTINUE 02230361 CT009* TEST 9 EXPRESSIONS PRESENTED TO FUNCTION 02240361 IVTNUM = 9 02250361 IHDVI = 3 02260361 IHEVI = 4 02270361 RHAVS = AMAX0(IHDVI + IHEVI, -IHEVI - IHDVI) 02280361 IF (RHAVS - 6.9996) 20090, 10090, 40090 02290361 40090 IF (RHAVS - 7.0004) 10090, 10090, 20090 02300361 10090 IVPASS = IVPASS + 1 02310361 WRITE (NUVI, 80002) IVTNUM 02320361 GO TO 0091 02330361 20090 IVFAIL = IVFAIL + 1 02340361 RVCORR = 7.0 02350361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 02360361 0091 CONTINUE 02370361 CT010* TEST 10 3 ARGUMENTS 02380361 IVTNUM = 10 02390361 IHBVI = 0 02400361 IHCVI = 1 02410361 IHDVI = 3 02420361 RHAVS = AMAX0(IHBVI, IHCVI, IHDVI) 02430361 IF (RHAVS - 2.9998) 20100, 10100, 40100 02440361 40100 IF (RHAVS - 3.0002) 10100, 10100, 20100 02450361 10100 IVPASS = IVPASS + 1 02460361 WRITE (NUVI, 80002) IVTNUM 02470361 GO TO 0101 02480361 20100 IVFAIL = IVFAIL + 1 02490361 RVCORR = 3.0 02500361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 02510361 0101 CONTINUE 02520361 CT011* TEST 11 4 ARGUMENTS 02530361 IVTNUM = 11 02540361 IHBVI = 0 02550361 IHCVI = 1 02560361 IHDVI = 4 02570361 RHAVS = AMAX0(IHDVI, -IHBVI, IHCVI, IHBVI) 02580361 IF (RHAVS - 3.9998) 20110, 10110, 40110 02590361 40110 IF (RHAVS - 4.0002) 10110, 10110, 20110 02600361 10110 IVPASS = IVPASS + 1 02610361 WRITE (NUVI, 80002) IVTNUM 02620361 GO TO 0111 02630361 20110 IVFAIL = IVFAIL + 1 02640361 RVCORR = 4.0 02650361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 02660361 0111 CONTINUE 02670361 CT012* TEST 12 5 ARGUMENTS 02680361 IVTNUM = 12 02690361 IHDVI = 4.0 02700361 IHEVI = 5.0 02710361 RHAVS = AMAX0(IHDVI, -IHDVI, -IHEVI, +IHDVI, IHEVI) 02720361 IF (RHAVS - 4.9997) 20120, 10120, 40120 02730361 40120 IF (RHAVS - 5.0003) 10120, 10120, 20120 02740361 10120 IVPASS = IVPASS + 1 02750361 WRITE (NUVI, 80002) IVTNUM 02760361 GO TO 0121 02770361 20120 IVFAIL = IVFAIL + 1 02780361 RVCORR = 5.0 02790361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 02800361 0121 CONTINUE 02810361 C***** 02820361 WRITE (NUVI, 90002) 02830361 WRITE (NUVI, 90013) 02840361 WRITE (NUVI, 90014) 02850361 C***** TEST OF AMAX1 02860361 C***** 02870361 WRITE(NUVI, 16504) 02880361 16504 FORMAT (/ 8X, "TEST OF AMAX1" ) 02890361 CT013* TEST 13 BOTH VALUES ZERO 02900361 IVTNUM = 13 02910361 RHBVS = 0.0 02920361 RHDVS = 0.0 02930361 RHAVS = AMAX1(RHBVS, RHDVS) 02940361 IF (RHAVS + 0.00005) 20130, 10130, 40130 02950361 40130 IF (RHAVS - 0.00005) 10130, 10130, 20130 02960361 10130 IVPASS = IVPASS + 1 02970361 WRITE (NUVI, 80002) IVTNUM 02980361 GO TO 0131 02990361 20130 IVFAIL = IVFAIL + 1 03000361 RVCORR = 0.0 03010361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03020361 0131 CONTINUE 03030361 CT014* TEST 14 FIRST VALUE NON-ZERO, SECOND ZERO 03040361 IVTNUM = 14 03050361 RHBVS = 5.625 03060361 RHDVS = 0.0 03070361 RHAVS = AMAX1(RHBVS, RHDVS) 03080361 IF (RHAVS - 5.6247) 20140, 10140, 40140 03090361 40140 IF (RHAVS - 5.6253) 10140, 10140, 20140 03100361 10140 IVPASS = IVPASS + 1 03110361 WRITE (NUVI, 80002) IVTNUM 03120361 GO TO 0141 03130361 20140 IVFAIL = IVFAIL + 1 03140361 RVCORR = 5.625 03150361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03160361 0141 CONTINUE 03170361 CT015* TEST 15 BOTH VALUES EQUAL 03180361 IVTNUM = 15 03190361 RHBVS = 6.5 03200361 RHDVS = 6.5 03210361 RHAVS = AMAX1(RHBVS, RHDVS) 03220361 IF (RHAVS - 6.4996) 20150, 10150, 40150 03230361 40150 IF (RHAVS - 6.5004) 10150, 10150, 20150 03240361 10150 IVPASS = IVPASS + 1 03250361 WRITE (NUVI, 80002) IVTNUM 03260361 GO TO 0151 03270361 20150 IVFAIL = IVFAIL + 1 03280361 RVCORR = 6.5 03290361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03300361 0151 CONTINUE 03310361 CT016* TEST 16 VALUES NOT EQUAL 03320361 IVTNUM = 16 03330361 RHBVS = 7.125 03340361 RHDVS = 5.125 03350361 RHAVS = AMAX1(RHBVS, RHDVS) 03360361 IF (RHAVS - 7.1246) 20160, 10160, 40160 03370361 40160 IF (RHAVS - 7.1254) 10160, 10160, 20160 03380361 10160 IVPASS = IVPASS + 1 03390361 WRITE (NUVI, 80002) IVTNUM 03400361 GO TO 0161 03410361 20160 IVFAIL = IVFAIL + 1 03420361 RVCORR = 7.125 03430361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03440361 0161 CONTINUE 03450361 CT017* TEST 17 FIRST VALUE NEGATIVE, SECOND ZERO 03460361 IVTNUM = 17 03470361 RHBVS = -5.625 03480361 RHDVS = 0.0 03490361 RHAVS = AMAX1(RHBVS, RHDVS) 03500361 IF (RHAVS + 0.00005) 20170, 10170, 40170 03510361 40170 IF (RHAVS - 0.00005) 10170, 10170, 20170 03520361 10170 IVPASS = IVPASS + 1 03530361 WRITE (NUVI, 80002) IVTNUM 03540361 GO TO 0171 03550361 20170 IVFAIL = IVFAIL + 1 03560361 RVCORR = 0.0 03570361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03580361 0171 CONTINUE 03590361 CT018* TEST 18 BOTH VALUES EQUAL, BOTH NEGATIVE 03600361 IVTNUM = 18 03610361 RHBVS = -6.5 03620361 RHDVS = -6.5 03630361 RHAVS = AMAX1(RHBVS, RHDVS) 03640361 IF (RHAVS + 6.5004) 20180, 10180, 40180 03650361 40180 IF (RHAVS + 6.4996) 10180, 10180, 20180 03660361 10180 IVPASS = IVPASS + 1 03670361 WRITE (NUVI, 80002) IVTNUM 03680361 GO TO 0181 03690361 20180 IVFAIL = IVFAIL + 1 03700361 RVCORR = -6.5 03710361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03720361 0181 CONTINUE 03730361 CT019* TEST 19 VALUES NOT EQUAL, BOTH NEGATIVE 03740361 IVTNUM = 19 03750361 RHBVS = -7.125 03760361 RHDVS = -5.125 03770361 RHAVS = AMAX1(RHBVS, RHDVS) 03780361 IF (RHAVS + 5.1253) 20190, 10190, 40190 03790361 40190 IF (RHAVS + 5.1247) 10190, 10190, 20190 03800361 10190 IVPASS = IVPASS + 1 03810361 WRITE (NUVI, 80002) IVTNUM 03820361 GO TO 0191 03830361 20190 IVFAIL = IVFAIL + 1 03840361 RVCORR = -5.125 03850361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 03860361 0191 CONTINUE 03870361 CT020* TEST 20 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN 03880361 IVTNUM = 20 03890361 RHDVS = 5.625 03900361 RHEVS = 0.0 03910361 RHAVS = AMAX1(RHDVS, -RHEVS) 03920361 IF (RHAVS - 5.6247) 20200, 10200, 40200 03930361 40200 IF (RHAVS - 5.6253) 10200, 10200, 20200 03940361 10200 IVPASS = IVPASS + 1 03950361 WRITE (NUVI, 80002) IVTNUM 03960361 GO TO 0201 03970361 20200 IVFAIL = IVFAIL + 1 03980361 RVCORR = 5.625 03990361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 04000361 0201 CONTINUE 04010361 CT021* TEST 21 EXPRESSIONS PRESENTED TO FUNCTION 04020361 IVTNUM = 21 04030361 RHDVS = 3.5 04040361 RHEVS = 4.0 04050361 RHAVS = AMAX1(RHDVS + RHEVS, -RHEVS - RHDVS) 04060361 IF (RHAVS - 7.4996) 20210, 10210, 40210 04070361 40210 IF (RHAVS - 7.5004) 10210, 10210, 20210 04080361 10210 IVPASS = IVPASS + 1 04090361 WRITE (NUVI, 80002) IVTNUM 04100361 GO TO 0211 04110361 20210 IVFAIL = IVFAIL + 1 04120361 RVCORR = 7.5 04130361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 04140361 0211 CONTINUE 04150361 CT022* TEST 22 3 ARGUMENTS 04160361 IVTNUM = 22 04170361 RHBVS = 0.0 04180361 RHCVS = 1.0 04190361 RHDVS = 0.5 04200361 RHAVS = AMAX1(RHBVS, RHCVS, RHDVS) 04210361 IF (RHAVS - 0.99995) 20220, 10220, 40220 04220361 40220 IF (RHAVS - 1.0001) 10220, 10220, 20220 04230361 10220 IVPASS = IVPASS + 1 04240361 WRITE (NUVI, 80002) IVTNUM 04250361 GO TO 0221 04260361 20220 IVFAIL = IVFAIL + 1 04270361 RVCORR = 1.0 04280361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 04290361 0221 CONTINUE 04300361 CT023* TEST 23 4 ARGUMENTS 04310361 IVTNUM = 23 04320361 RHBVS = 1.5 04330361 RHCVS = 3.4 04340361 RHDVS = 3.5 04350361 RHAVS = AMAX1(-RHDVS, RHCVS, RHBVS, RHDVS) 04360361 IF (RHAVS - 3.4998) 20230, 10230, 40230 04370361 40230 IF (RHAVS - 3.5002) 10230, 10230, 20230 04380361 10230 IVPASS = IVPASS + 1 04390361 WRITE (NUVI, 80002) IVTNUM 04400361 GO TO 0231 04410361 20230 IVFAIL = IVFAIL + 1 04420361 RVCORR = 3.5 04430361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 04440361 0231 CONTINUE 04450361 CT024* TEST 24 5 ARGUMENTS 04460361 IVTNUM = 24 04470361 RHDVS = 3.5 04480361 RHEVS = 4.5 04490361 RHAVS = AMAX1(RHDVS, -RHDVS, -RHEVS, +RHDVS, RHEVS) 04500361 IF (RHAVS - 4.4997) 20240, 10240, 40240 04510361 40240 IF (RHAVS - 4.5003) 10240, 10240, 20240 04520361 10240 IVPASS = IVPASS + 1 04530361 WRITE (NUVI, 80002) IVTNUM 04540361 GO TO 0241 04550361 20240 IVFAIL = IVFAIL + 1 04560361 RVCORR = 4.5 04570361 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 04580361 0241 CONTINUE 04590361 C***** 04600361 WRITE (NUVI, 90002) 04610361 WRITE (NUVI, 90013) 04620361 WRITE (NUVI, 90014) 04630361 C***** TEST OF MAX0 04640361 C***** 04650361 WRITE(NUVI, 16505) 04660361 16505 FORMAT (/ 8X, "TEST OF MAX0" ) 04670361 C***** 04680361 CT025* TEST 25 BOTH VALUES ZERO 04690361 IVTNUM = 25 04700361 IHBVI = 0 04710361 IHDVI = 0 04720361 IHAVI = MAX0(IHBVI, IHDVI) 04730361 IF (IHAVI - 0) 20250, 10250, 20250 04740361 10250 IVPASS = IVPASS + 1 04750361 WRITE (NUVI, 80002) IVTNUM 04760361 GO TO 0251 04770361 20250 IVFAIL = IVFAIL + 1 04780361 IVCORR = 0 04790361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 04800361 0251 CONTINUE 04810361 CT026* TEST 26 FIRST VALUE NON-ZERO, SECOND ZERO 04820361 IVTNUM = 26 04830361 IHBVI = 6 04840361 IHDVI = 0 04850361 IHAVI = MAX0(IHBVI, IHDVI) 04860361 IF (IHAVI - 6) 20260, 10260, 20260 04870361 10260 IVPASS = IVPASS + 1 04880361 WRITE (NUVI, 80002) IVTNUM 04890361 GO TO 0261 04900361 20260 IVFAIL = IVFAIL + 1 04910361 IVCORR = 6 04920361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 04930361 0261 CONTINUE 04940361 CT027* TEST 27 BOTH VALUES EQUAL 04950361 IVTNUM = 27 04960361 IHBVI = 7 04970361 IHDVI = 7 04980361 IHAVI = MAX0(IHBVI, IHDVI) 04990361 IF (IHAVI - 7) 20270, 10270, 20270 05000361 10270 IVPASS = IVPASS + 1 05010361 WRITE (NUVI, 80002) IVTNUM 05020361 GO TO 0271 05030361 20270 IVFAIL = IVFAIL + 1 05040361 IVCORR = 7 05050361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05060361 0271 CONTINUE 05070361 CT028* TEST 28 VALUES NOT EQUAL 05080361 IVTNUM = 28 05090361 IHBVI = 7 05100361 IHDVI = 5 05110361 IHAVI = MAX0(IHBVI, IHDVI) 05120361 IF (IHAVI - 7) 20280, 10280, 20280 05130361 10280 IVPASS = IVPASS + 1 05140361 WRITE (NUVI, 80002) IVTNUM 05150361 GO TO 0281 05160361 20280 IVFAIL = IVFAIL + 1 05170361 IVCORR = 7 05180361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05190361 0281 CONTINUE 05200361 CT029* TEST 29 FIRST VALUE NEGATIVE, SECOND ZERO 05210361 IVTNUM = 29 05220361 IHBVI = -6 05230361 IHDVI = 0 05240361 IHAVI = MAX0(IHBVI, IHDVI) 05250361 IF (IHAVI - 0) 20290, 10290, 20290 05260361 10290 IVPASS = IVPASS + 1 05270361 WRITE (NUVI, 80002) IVTNUM 05280361 GO TO 0291 05290361 20290 IVFAIL = IVFAIL + 1 05300361 IVCORR = 0 05310361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05320361 0291 CONTINUE 05330361 CT030* TEST 30 BOTH VALUES EQUAL, BOTH NEGATIVE 05340361 IVTNUM = 30 05350361 IHBVI = -7 05360361 IHDVI = -7 05370361 IHAVI = MAX0(IHBVI, IHDVI) 05380361 IF (IHAVI + 7) 20300, 10300, 20300 05390361 10300 IVPASS = IVPASS + 1 05400361 WRITE (NUVI, 80002) IVTNUM 05410361 GO TO 0301 05420361 20300 IVFAIL = IVFAIL + 1 05430361 IVCORR = -7 05440361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05450361 0301 CONTINUE 05460361 CT031* TEST 31 VALUES NOT EQUAL, BOTH NEGATIVE 05470361 IVTNUM = 31 05480361 IHBVI = -7 05490361 IHDVI = -5 05500361 IHAVI = MAX0(IHBVI, IHDVI) 05510361 IF (IHAVI + 5) 20310, 10310, 20310 05520361 10310 IVPASS = IVPASS + 1 05530361 WRITE (NUVI, 80002) IVTNUM 05540361 GO TO 0311 05550361 20310 IVFAIL = IVFAIL + 1 05560361 IVCORR = -5 05570361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05580361 0311 CONTINUE 05590361 CT032* TEST 32 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN 05600361 IVTNUM = 32 05610361 IHDVI = 6 05620361 IHEVI = 0 05630361 IHAVI = MAX0(IHDVI, -IHEVI) 05640361 IF (IHAVI - 6) 20320, 10320, 20320 05650361 10320 IVPASS = IVPASS + 1 05660361 WRITE (NUVI, 80002) IVTNUM 05670361 GO TO 0321 05680361 20320 IVFAIL = IVFAIL + 1 05690361 IVCORR = 6 05700361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05710361 0321 CONTINUE 05720361 CT033* TEST 33 EXPRESSIONS PRESENTED TO FUNCTION 05730361 IVTNUM = 33 05740361 IHDVI = 3 05750361 IHEVI = 4 05760361 IHAVI = MAX0(IHDVI + IHEVI, -IHEVI - IHDVI) 05770361 IF (IHAVI - 7) 20330, 10330, 20330 05780361 10330 IVPASS = IVPASS + 1 05790361 WRITE (NUVI, 80002) IVTNUM 05800361 GO TO 0331 05810361 20330 IVFAIL = IVFAIL + 1 05820361 IVCORR = 7 05830361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05840361 0331 CONTINUE 05850361 CT034* TEST 34 3 ARGUMENTS 05860361 IVTNUM = 34 05870361 IHBVI = 0 05880361 IHCVI = 3 05890361 IHDVI = -4 05900361 IHAVI = MAX0(IHDVI, IHBVI, IHCVI) 05910361 IF (IHAVI - 3) 20340, 10340, 20340 05920361 10340 IVPASS = IVPASS + 1 05930361 WRITE (NUVI, 80002) IVTNUM 05940361 GO TO 0341 05950361 20340 IVFAIL = IVFAIL + 1 05960361 IVCORR = 3 05970361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 05980361 0341 CONTINUE 05990361 CT035* TEST 35 4 ARGUMENTS 06000361 IVTNUM = 35 06010361 IHBVI = -1 06020361 IHCVI = 0 06030361 IHDVI = 4 06040361 IHAVI = MAX0(IHDVI, IHCVI, IHBVI, IHDVI) 06050361 IF (IHAVI - 4) 20350, 10350, 20350 06060361 10350 IVPASS = IVPASS + 1 06070361 WRITE (NUVI, 80002) IVTNUM 06080361 GO TO 0351 06090361 20350 IVFAIL = IVFAIL + 1 06100361 IVCORR = 4 06110361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06120361 0351 CONTINUE 06130361 CT036* TEST 36 5 ARGUMENTS 06140361 IVTNUM = 36 06150361 IHDVI = 4 06160361 IHEVI = 5 06170361 IHAVI = MAX0(IHDVI, -IHDVI, -IHEVI, +IHDVI, IHEVI) 06180361 IF (IHAVI - 5) 20360, 10360, 20360 06190361 10360 IVPASS = IVPASS + 1 06200361 WRITE (NUVI, 80002) IVTNUM 06210361 GO TO 0361 06220361 20360 IVFAIL = IVFAIL + 1 06230361 IVCORR = 5 06240361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06250361 0361 CONTINUE 06260361 C***** 06270361 WRITE (NUVI, 90002) 06280361 WRITE (NUVI, 90013) 06290361 WRITE (NUVI, 90014) 06300361 C***** TEST OF MAX1 06310361 C***** 06320361 WRITE(NUVI, 16507) 06330361 16507 FORMAT (/ 8X, "TEST OF MAX1" ) 06340361 CT037* TEST 37 BOTH VALUES EQUAL 06350361 IVTNUM = 37 06360361 RHBVS = 0.0 06370361 RHDVS = 0.0 06380361 IHAVI = MAX1(RHBVS, RHDVS) 06390361 IF (IHAVI - 0) 20370, 10370, 20370 06400361 10370 IVPASS = IVPASS + 1 06410361 WRITE (NUVI, 80002) IVTNUM 06420361 GO TO 0371 06430361 20370 IVFAIL = IVFAIL + 1 06440361 IVCORR = 0 06450361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06460361 0371 CONTINUE 06470361 CT038* TEST 38 FIRST VALUE NON-ZERO, SECOND ZERO 06480361 IVTNUM = 38 06490361 RHBVS = 5.625 06500361 RHDVS = 0.0 06510361 IHAVI = MAX1(RHBVS, RHDVS) 06520361 IF (IHAVI - 5) 20380, 10380, 20380 06530361 10380 IVPASS = IVPASS + 1 06540361 WRITE (NUVI, 80002) IVTNUM 06550361 GO TO 0381 06560361 20380 IVFAIL = IVFAIL + 1 06570361 IVCORR = 5 06580361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06590361 0381 CONTINUE 06600361 CT039* TEST 39 BOTH VALUES EQUAL 06610361 IVTNUM = 39 06620361 RHBVS = 6.5 06630361 RHDVS = 6.5 06640361 IHAVI = MAX1(RHBVS, RHDVS) 06650361 IF (IHAVI - 6) 20390, 10390, 20390 06660361 10390 IVPASS = IVPASS + 1 06670361 WRITE (NUVI, 80002) IVTNUM 06680361 GO TO 0391 06690361 20390 IVFAIL = IVFAIL + 1 06700361 IVCORR = 6 06710361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06720361 0391 CONTINUE 06730361 CT040* TEST 40 VALUES NOT EQUAL 06740361 IVTNUM = 40 06750361 RHBVS = 7.125 06760361 RHDVS = 5.125 06770361 IHAVI = MAX1(RHBVS, RHDVS) 06780361 IF (IHAVI - 7) 20400, 10400, 20400 06790361 10400 IVPASS = IVPASS + 1 06800361 WRITE (NUVI, 80002) IVTNUM 06810361 GO TO 0401 06820361 20400 IVFAIL = IVFAIL + 1 06830361 IVCORR = 7 06840361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06850361 0401 CONTINUE 06860361 CT041* TEST 41 FIRST VALUE NEGATIVE, SECOND ZERO 06870361 IVTNUM = 41 06880361 RHBVS = -5.625 06890361 RHDVS = 0.0 06900361 IHAVI = MAX1(RHBVS, RHDVS) 06910361 IF (IHAVI - 0) 20410, 10410, 20410 06920361 10410 IVPASS = IVPASS + 1 06930361 WRITE (NUVI, 80002) IVTNUM 06940361 GO TO 0411 06950361 20410 IVFAIL = IVFAIL + 1 06960361 IVCORR = 0 06970361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 06980361 0411 CONTINUE 06990361 CT042* TEST 42 BOTH VALUES EQUAL, BOTH NEGATIVE 07000361 IVTNUM = 42 07010361 RHBVS = - 6.5 07020361 RHDVS = - 6.5 07030361 IHAVI = MAX1(RHBVS, RHDVS) 07040361 IF (IHAVI + 6) 20420, 10420, 20420 07050361 10420 IVPASS = IVPASS + 1 07060361 WRITE (NUVI, 80002) IVTNUM 07070361 GO TO 0421 07080361 20420 IVFAIL = IVFAIL + 1 07090361 IVCORR = -6 07100361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07110361 0421 CONTINUE 07120361 CT043* TEST 43 VALUES NOT EQUAL, BOTH NEGATIVE 07130361 IVTNUM = 43 07140361 RHBVS = -7.125 07150361 RHDVS = -5.125 07160361 IHAVI = MAX1(RHBVS, RHDVS) 07170361 IF (IHAVI + 5) 20430, 10430, 20430 07180361 10430 IVPASS = IVPASS + 1 07190361 WRITE (NUVI, 80002) IVTNUM 07200361 GO TO 0431 07210361 20430 IVFAIL = IVFAIL + 1 07220361 IVCORR = -5 07230361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07240361 0431 CONTINUE 07250361 CT044* TEST 44 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY A MINUS SIGN 07260361 IVTNUM = 44 07270361 RHDVS = 5.625 07280361 RHEVS = 0.0 07290361 IHAVI = MAX1(RHDVS, -RHEVS) 07300361 IF (IHAVI - 5) 20440, 10440, 20440 07310361 10440 IVPASS = IVPASS + 1 07320361 WRITE (NUVI, 80002) IVTNUM 07330361 GO TO 0441 07340361 20440 IVFAIL = IVFAIL + 1 07350361 IVCORR = 5 07360361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07370361 0441 CONTINUE 07380361 CT045* TEST 45 EXPRESSIONS PRESENTED TO FUNCTION 07390361 IVTNUM = 45 07400361 RHDVS = 3.5 07410361 RHEVS = 4.0 07420361 IHAVI = MAX1(RHDVS + RHEVS, -RHEVS - RHDVS) 07430361 IF (IHAVI - 7) 20450, 10450, 20450 07440361 10450 IVPASS = IVPASS + 1 07450361 WRITE (NUVI, 80002) IVTNUM 07460361 GO TO 0451 07470361 20450 IVFAIL = IVFAIL + 1 07480361 IVCORR = 7 07490361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07500361 0451 CONTINUE 07510361 CT046* TEST 46 3 ARGUMENTS 07520361 IVTNUM = 46 07530361 RHBVS = 0.0 07540361 RHCVS = 4.0 07550361 RHDVS = 0.0 07560361 IHAVI = MAX1(RHBVS, -RHCVS, RHDVS) 07570361 IF (IHAVI - 0) 20460, 10460, 20460 07580361 10460 IVPASS = IVPASS + 1 07590361 WRITE (NUVI, 80002) IVTNUM 07600361 GO TO 0461 07610361 20460 IVFAIL = IVFAIL + 1 07620361 IVCORR = 0 07630361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07640361 0461 CONTINUE 07650361 CT047* TEST 47 4 ARGUMENTS 07660361 IVTNUM = 47 07670361 RHBVS = 3.49 07680361 RHCVS = 0.0 07690361 RHDVS = 3.5 07700361 IHAVI = MAX1(RHDVS, RHBVS, -RHBVS, RHCVS) 07710361 IF (IHAVI - 3) 20470, 10470, 20470 07720361 10470 IVPASS = IVPASS + 1 07730361 WRITE (NUVI, 80002) IVTNUM 07740361 GO TO 0471 07750361 20470 IVFAIL = IVFAIL + 1 07760361 IVCORR = 3 07770361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07780361 0471 CONTINUE 07790361 CT048* TEST 48 5 ARGUMENTS 07800361 IVTNUM = 48 07810361 RHDVS = 3.5 07820361 RHEVS = 4.5 07830361 IHAVI = MAX1(RHDVS, -RHDVS, -RHEVS, +RHDVS, RHEVS) 07840361 IF (IHAVI - 4) 20480, 10480, 20480 07850361 10480 IVPASS = IVPASS + 1 07860361 WRITE (NUVI, 80002) IVTNUM 07870361 GO TO 0481 07880361 20480 IVFAIL = IVFAIL + 1 07890361 IVCORR = 4 07900361 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 07910361 0481 CONTINUE 07920361 C***** 07930361 CBB** ********************** BBCSUM0 **********************************07940361 C**** WRITE OUT TEST SUMMARY 07950361 C**** 07960361 IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP 07970361 WRITE (I02, 90004) 07980361 WRITE (I02, 90014) 07990361 WRITE (I02, 90004) 08000361 WRITE (I02, 90020) IVPASS 08010361 WRITE (I02, 90022) IVFAIL 08020361 WRITE (I02, 90024) IVDELE 08030361 WRITE (I02, 90026) IVINSP 08040361 WRITE (I02, 90028) IVTOTN, IVTOTL 08050361 CBE** ********************** BBCSUM0 **********************************08060361 CBB** ********************** BBCFOOT0 **********************************08070361 C**** WRITE OUT REPORT FOOTINGS 08080361 C**** 08090361 WRITE (I02,90016) ZPROG, ZPROG 08100361 WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED 08110361 WRITE (I02,90019) 08120361 CBE** ********************** BBCFOOT0 **********************************08130361 CBB** ********************** BBCFMT0A **********************************08140361 C**** FORMATS FOR TEST DETAIL LINES 08150361 C**** 08160361 80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31) 08170361 80002 FORMAT (" ",2X,I3,4X," PASS ",32X,A31) 08180361 80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31) 08190361 80008 FORMAT (" ",2X,I3,4X," FAIL ",32X,A31) 08200361 80010 FORMAT (" ",2X,I3,4X," FAIL ",/," ",15X,"COMPUTED= " , 08210361 1I6,/," ",15X,"CORRECT= " ,I6) 08220361 80012 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 08230361 1E12.5,/," ",16X,"CORRECT= " ,E12.5) 08240361 80018 FORMAT (" ",2X,I3,4X," FAIL ",/," ",16X,"COMPUTED= " , 08250361 1A21,/," ",16X,"CORRECT= " ,A21) 08260361 80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31) 08270361 80022 FORMAT (" ",16X,"CORRECT= " ,A21,1X,A31) 08280361 80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31) 08290361 80026 FORMAT (" ",16X,"CORRECT= " ,I6,16X,A31) 08300361 80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31) 08310361 80030 FORMAT (" ",16X,"CORRECT= " ,E12.5,10X,A31) 08320361 80050 FORMAT (" ",48X,A31) 08330361 CBE** ********************** BBCFMT0A **********************************08340361 CBB** ********************** BBCFMT0B **********************************08350361 C**** FORMAT STATEMENTS FOR PAGE HEADERS 08360361 C**** 08370361 90002 FORMAT ("1") 08380361 90004 FORMAT (" ") 08390361 90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )08400361 90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08410361 90008 FORMAT (" ",21X,A13,A17) 08420361 90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/) 08430361 90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17," - COMPILER= " ,A20) 08440361 90013 FORMAT (" "," TEST ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" , 08450361 1 7X,"REMARKS",24X) 08460361 90014 FORMAT (" ","----------------------------------------------" , 08470361 1 "---------------------------------" ) 08480361 90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/) 08490361 C**** 08500361 C**** FORMAT STATEMENTS FOR REPORT FOOTINGS 08510361 C**** 08520361 90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/) 08530361 90018 FORMAT (" ",A13,13X,A20," * ",A10,"/", 08540361 1 A13) 08550361 90019 FORMAT (" ","FOR OFFICIAL USE ONLY " ,35X,"COPYRIGHT 1982" ) 08560361 C**** 08570361 C**** FORMAT STATEMENTS FOR RUN SUMMARY 08580361 C**** 08590361 90020 FORMAT (" ",21X,I5," TESTS PASSED" ) 08600361 90022 FORMAT (" ",21X,I5," TESTS FAILED" ) 08610361 90024 FORMAT (" ",21X,I5," TESTS DELETED" ) 08620361 90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" ) 08630361 90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" ) 08640361 CBE** ********************** BBCFMT0B **********************************08650361 C***** 08660361 C***** END OF TEST SEGMENT 165 08670361 STOP 08680361 END 08690361 08700361