blob: 1bda506500d60261d0b2018be7d77a2b87c2c2ae [file] [log] [blame]
PROGRAM FM351 00010351
C 00020351
C 00030351
C THIS PROGRAM CONTAINS TESTS FOR COMPOUND ARITHMETIC 00040351
C EXPRESSIONS WHICH NECESSITATE THE APPLICATION OF THE RULES 00050351
C FOR ARITHMETIC OPERATOR PRECEDENCE. THESE TESTS INCLUDE ONES 00060351
C WHICH EXERCIZE THE 00070351
C 00080351
C (1) USE OF ALL ARITHMETIC OPERATOR TYPES IN THE SAME STATEMENT. 00090351
C (2) USE OF PARENTHESES TO OVERRIDE DEFAULT PRECEDENCES. 00100351
C (3) USE OF ALL CLASSES OF PRIMARY OPERANDS. 00110351
C (4) USE OF NESTED FUNCTION REFERENCES. 00120351
C (5) USE OF MIXED DATA TYPES. 00130351
C 00140351
C REFERENCES - 00150351
C 00160351
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, X3.9-197700170351
C 00180351
C SECTION 6.1 ARITHMETIC EXPRESSIONS 00190351
C SECTION 6.5 PRECEDENCE OF OPERATORS 00200351
C SECTION 6.6 EVALUATION OF EXPRESSIONS 00210351
C 00220351
C 00230351
C ******************************************************************00240351
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00250351
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00260351
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00270351
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00280351
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00290351
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00300351
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00310351
C THE RESULT OF EXECUTING THESE TESTS. 00320351
C 00330351
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00340351
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00350351
C 00360351
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00370351
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00380351
C SOFTWARE STANDARDS VALIDATION GROUP 00390351
C BUILDING 225 RM A266 00400351
C GAITHERSBURG, MD 20899 00410351
C ******************************************************************00420351
C 00430351
C 00440351
IMPLICIT LOGICAL (L) 00450351
IMPLICIT CHARACTER*14 (C) 00460351
C 00470351
DIMENSION IADN11(5), RADN11(5) 00480351
IFOS01(IDON01,IDON02,IDON03) = IDON01 ** IDON02 ** IDON03 00490351
IFOS02(IDON04,IDON05) = IADN11(IDON04) / IADN11(IDON05) 00500351
IFOS04(IDON09,IDON10) = IADN11(IDON09) + IABS(IDON10) 00510351
IFOS03(IDON06,IDON07,IDON08) = IFOS04(IDON06,IDON07) * IDON08 00520351
RFOS01(RDON01,RDON02,RDON03) = RDON01 ** RDON02 ** RDON03 00530351
RFOS02(IDON11,IDON12) = RADN11(IDON11) / RADN11(IDON12) 00540351
RFOS04(IDON13,RDON10) = RADN11(IDON13) + ABS(RDON10) 00550351
RFOS03(RDON06,RDON07,RDON08) = RFOS04(INT(RDON06),RDON07) * RDON0800560351
IFOS05(IDON14,IDON16) = RADN11(IDON14) + IABS(IDON16) 00570351
RFOS06(RDON17,IDON18,RDON19) = IFOS05(INT(RDON17),IDON18) * RDON1900580351
C 00590351
C 00600351
C 00610351
C INITIALIZATION SECTION. 00620351
C 00630351
C INITIALIZE CONSTANTS 00640351
C ******************** 00650351
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00660351
I01 = 5 00670351
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00680351
I02 = 6 00690351
C SYSTEM ENVIRONMENT SECTION 00700351
C 00710351
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00720351
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00730351
C (UNIT NUMBER FOR CARD READER). 00740351
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00750351
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00760351
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00770351
C 00780351
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00790351
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00800351
C (UNIT NUMBER FOR PRINTER). 00810351
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00820351
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00830351
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00840351
C 00850351
IVPASS = 0 00860351
IVFAIL = 0 00870351
IVDELE = 0 00880351
ICZERO = 0 00890351
C 00900351
C WRITE OUT PAGE HEADERS 00910351
C 00920351
WRITE (I02,90002) 00930351
WRITE (I02,90006) 00940351
WRITE (I02,90008) 00950351
WRITE (I02,90004) 00960351
WRITE (I02,90010) 00970351
WRITE (I02,90004) 00980351
WRITE (I02,90016) 00990351
WRITE (I02,90001) 01000351
WRITE (I02,90004) 01010351
WRITE (I02,90012) 01020351
WRITE (I02,90014) 01030351
WRITE (I02,90004) 01040351
C 01050351
C 01060351
C TESTS 1 THROUGH 10 DEAL ENTIRELY WITH INTEGER EXPRESSIONS. 01070351
C 01080351
C 01090351
C **** FCVS PROGRAM 351 - TEST 001 **** 01100351
C 01110351
C TEST 1 CHECKS AN INTEGER EXPRESSION WHERE ALL FIVE ARITHMETIC 01120351
C OPERATORS ARE USED AND ALL OPERAND PRIMARIES ARE SIMPLE INTEGER 01130351
C VARIABLES. NO PARENTHESES ARE USED TO UPSET DEFAULT PRECEDENCES. 01140351
C 01150351
IVTNUM = 1 01160351
IF (ICZERO) 30010, 0010, 30010 01170351
0010 CONTINUE 01180351
IVON01 = 7 01190351
IVON02 = 3 01200351
IVON03 = 573 01210351
IVON04 = 23 01220351
IVON05 = 3 01230351
IVON06 = -7 01240351
IVCOMP = IVON01 ** IVON02 + IVON03 - IVON04 * IVON05 / IVON06 01250351
IVCORR = 925 01260351
40010 IF (IVCOMP - 925) 20010, 10010, 20010 01270351
30010 IVDELE = IVDELE + 1 01280351
WRITE (I02,80000) IVTNUM 01290351
IF (ICZERO) 10010, 0021, 20010 01300351
10010 IVPASS = IVPASS + 1 01310351
WRITE (I02,80002) IVTNUM 01320351
GO TO 0021 01330351
20010 IVFAIL = IVFAIL + 1 01340351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01350351
0021 CONTINUE 01360351
C 01370351
C **** FCVS PROGRAM 351 - TEST 002 **** 01380351
C 01390351
C TEST 2, LIKE TEST 1, CHECKS AN INTEGER EXPRESSION WHERE ALL 01400351
C FIVE ARITHMETIC OPERATORS ARE USED AND ALL OPERANDS ARE SIMPLE 01410351
C INTEGER VARIABLES; BUT IN THIS TEST, PARENTHESES ARE USED, AS IS 01420351
C A UNARY OPERATOR. 01430351
C 01440351
IVTNUM = 2 01450351
IF (ICZERO) 30020, 0020, 30020 01460351
0020 CONTINUE 01470351
IVON01 = 7 01480351
IVON02 = 3 01490351
IVON03 = 5 01500351
IVON04 = -3 01510351
IVON05 = 3 01520351
IVCOMP = -(IVON01 / IVON02) + (IVON03 * IVON04 ** IVON05) 01530351
IVCORR = -137 01540351
40020 IF (IVCOMP + 137) 20020, 10020, 20020 01550351
30020 IVDELE = IVDELE + 1 01560351
WRITE (I02,80000) IVTNUM 01570351
IF (ICZERO) 10020, 0031, 20020 01580351
10020 IVPASS = IVPASS + 1 01590351
WRITE (I02,80002) IVTNUM 01600351
GO TO 0031 01610351
20020 IVFAIL = IVFAIL + 1 01620351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01630351
0031 CONTINUE 01640351
C 01650351
C **** FCVS PROGRAM 351 - TEST 003 **** 01660351
C 01670351
C TEST 3 IS SIMILAR TO TEST 2 EXCEPT THAT IT EMPLOYS NESTED 01680351
C PARENTHESES. 01690351
C 01700351
IVTNUM = 3 01710351
IF (ICZERO) 30030, 0030, 30030 01720351
0030 CONTINUE 01730351
IVON01 = 5 01740351
IVON02 = 3 01750351
IVON03 = 5 01760351
IVON04 = 17 01770351
IVON05 = 14 01780351
IVON06 = 3 01790351
IVCOMP = IVON01 ** (-(IVON02 + (IVON03 - IVON04)) - (IVON05 / 01800351
1 IVON06)) 01810351
IVCORR = 3125 01820351
40030 IF (IVCOMP - 3125) 20030, 10030, 20030 01830351
30030 IVDELE = IVDELE + 1 01840351
WRITE (I02,80000) IVTNUM 01850351
IF (ICZERO) 10030, 0041, 20030 01860351
10030 IVPASS = IVPASS + 1 01870351
WRITE (I02,80002) IVTNUM 01880351
GO TO 0041 01890351
20030 IVFAIL = IVFAIL + 1 01900351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01910351
0041 CONTINUE 01920351
C 01930351
C **** FCVS PROGRAM 351 - TEST 004 **** 01940351
C 01950351
C TEST 4 IS SIMILAR TO TEST 2 AND 3 EXCEPT THAT THE 01960351
C PARENTHESES USED ARE EFFECTIVELY EXTRANEOUS. 01970351
C 01980351
IVTNUM = 4 01990351
IF (ICZERO) 30040, 0040, 30040 02000351
0040 CONTINUE 02010351
IVON01 = 3 02020351
IVON02 = 4 02030351
IVON03 = 5 02040351
IVON04 = 2 02050351
IVON05 = 3 02060351
IVON06 = 4 02070351
IVCOMP = ((IVON01) ** (IVON02) + (IVON03) - (IVON04) * 02080351
1 (IVON05) / (IVON06)) 02090351
IVCORR = 85 02100351
40040 IF (IVCOMP - 85) 20040, 10040, 20040 02110351
30040 IVDELE = IVDELE + 1 02120351
WRITE (I02,80000) IVTNUM 02130351
IF (ICZERO) 10040, 0051, 20040 02140351
10040 IVPASS = IVPASS + 1 02150351
WRITE (I02,80002) IVTNUM 02160351
GO TO 0051 02170351
20040 IVFAIL = IVFAIL + 1 02180351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02190351
0051 CONTINUE 02200351
C 02210351
C **** FCVS PROGRAM 351 - TEST 005 **** 02220351
C 02230351
C TEST 5 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY 02240351
C INTEGER VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, 02250351
C AND USING PARENTHESES TO OVERRIDE PRECEDENCES. 02260351
C 02270351
IVTNUM = 5 02280351
IF (ICZERO) 30050, 0050, 30050 02290351
0050 CONTINUE 02300351
IVON01 = 57 02310351
IVON02 = -3 02320351
IVON03 = 4 02330351
IVON04 = -1 02340351
IVON05 = -5 02350351
IVON06 = -2 02360351
IVCOMP = -IVON01 ** (IVON02 + IVON03 - IVON04) * 02370351
1 (IVON05 / IVON06) 02380351
IVCORR = -6498 02390351
40050 IF (IVCOMP + 6498) 20050, 10050, 20050 02400351
30050 IVDELE = IVDELE + 1 02410351
WRITE (I02,80000) IVTNUM 02420351
IF (ICZERO) 10050, 0061, 20050 02430351
10050 IVPASS = IVPASS + 1 02440351
WRITE (I02,80002) IVTNUM 02450351
GO TO 0061 02460351
20050 IVFAIL = IVFAIL + 1 02470351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02480351
0061 CONTINUE 02490351
C 02500351
C **** FCVS PROGRAM 351 - TEST 006 **** 02510351
C 02520351
C TEST 6 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY 02530351
C INTEGER VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, 02540351
C AND USING PARENTHESES TO OVERRIDE PRECEDENCES. 02550351
C 02560351
IVTNUM = 6 02570351
IF (ICZERO) 30060, 0060, 30060 02580351
0060 CONTINUE 02590351
IVON01 = 5 02600351
IVON02 = 3 02610351
IVON03 = 4 02620351
IVON04 = 5496 02630351
IVON05 = 7 02640351
IVON06 = -3 02650351
IVCOMP = ((IVON01 * (IVON02 / IVON03)) + IVON04) / IVON05 - 02660351
1 (-IVON06) 02670351
IVCORR = 782 02680351
40060 IF (IVCOMP - 782) 20060, 10060, 20060 02690351
30060 IVDELE = IVDELE + 1 02700351
WRITE (I02,80000) IVTNUM 02710351
IF (ICZERO) 10060, 0071, 20060 02720351
10060 IVPASS = IVPASS + 1 02730351
WRITE (I02,80002) IVTNUM 02740351
GO TO 0071 02750351
20060 IVFAIL = IVFAIL + 1 02760351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02770351
0071 CONTINUE 02780351
C 02790351
C **** FCVS PROGRAM 351 - TEST 007 **** 02800351
C 02810351
C IN TEST 7, AN INTEGER EXPRESSION INVOLVING ALL FIVE 02820351
C ARITHMETIC OPERATORS TOGETHER WITH PARENTHESES IS EVALUATED, 02830351
C BUT UNLIKE TESTS 1 THROUGH 6 WHERE ALL OPERANDS WERE INTEGER 02840351
C VARIABLES, THE OPERANDS IN TEST 7 ARE CLASSED AS INTEGER 02850351
C VARIABLES, INTEGER CONSTANTS, INTEGER ARRAY ELEMENTS, AND INTEGER 02860351
C FUNCTION REFERENCES. 02870351
C 02880351
IVTNUM = 7 02890351
IF (ICZERO) 30070, 0070, 30070 02900351
0070 CONTINUE 02910351
IVON01 = 573 02920351
IVON02 = 1 02930351
IVON03 = 3 02940351
IVON04 = 2 02950351
IVON05 = 3 02960351
IADN11(3) = 3071 02970351
IVCOMP = (IVON01 + 1) - (5 + IADN11(IVON03)) / 02980351
1 (IFOS01(IVON03,IVON04,IVON05) ** IVON02) 02990351
IVCORR = 574 03000351
40070 IF (IVCOMP - 574) 20070, 10070, 20070 03010351
30070 IVDELE = IVDELE + 1 03020351
WRITE (I02,80000) IVTNUM 03030351
IF (ICZERO) 10070, 0081, 20070 03040351
10070 IVPASS = IVPASS + 1 03050351
WRITE (I02,80002) IVTNUM 03060351
GO TO 0081 03070351
20070 IVFAIL = IVFAIL + 1 03080351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03090351
0081 CONTINUE 03100351
C 03110351
C **** FCVS PROGRAM 351 - TEST 008 **** 03120351
C 03130351
C TEST 8 IS IDENTICAL TO TEST 7 EXCEPT THAT PARENTHESES ARE 03140351
C USED TO CHANGE THE ORDER OF SUB-EXPRESSION EVALUATION. 03150351
C 03160351
IVTNUM = 8 03170351
IF (ICZERO) 30080, 0080, 30080 03180351
0080 CONTINUE 03190351
IVON01 = 573 03200351
IVON02 = 1 03210351
IVON03 = 3 03220351
IVON04 = 2 03230351
IVON05 = 3 03240351
IADN11(3) = 3071 03250351
IVCOMP = ((IVON01 + 1) - (5 + IADN11(IVON03))) / 03260351
1 IFOS01(IVON03,IVON04,IVON05) ** IVON02 03270351
IVCORR = 0 03280351
40080 IF (IVCOMP) 20080, 10080, 20080 03290351
30080 IVDELE = IVDELE + 1 03300351
WRITE (I02,80000) IVTNUM 03310351
IF (ICZERO) 10080, 0091, 20080 03320351
10080 IVPASS = IVPASS + 1 03330351
WRITE (I02,80002) IVTNUM 03340351
GO TO 0091 03350351
20080 IVFAIL = IVFAIL + 1 03360351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03370351
0091 CONTINUE 03380351
C 03390351
C **** FCVS PROGRAM 351 - TEST 009 **** 03400351
C 03410351
C TEST 9 IS SIMILAR TO TESTS 7 AND 8 EXCEPT THAT THE 03420351
C FUNCTION REFERENCE IN TURN EVALUATES ARRAY ELEMENTS. 03430351
C 03440351
IVTNUM = 9 03450351
IF (ICZERO) 30090, 0090, 30090 03460351
0090 CONTINUE 03470351
IVON01 = 7 03480351
IVON02 = 3 03490351
IVON03 = 2 03500351
IVON04 = 1 03510351
IVON05 = 4 03520351
IADN11(1) = 5 03530351
IADN11(2) = 2 03540351
IADN11(4) = 2 03550351
IVCOMP = (IVON01 - 8 * IFOS02(IVON04,IVON03)) / IADN11(IVON05) + 03560351
1 13 ** IVON02 03570351
IVCORR = 2193 03580351
40090 IF (IVCOMP - 2193) 20090, 10090, 20090 03590351
30090 IVDELE = IVDELE + 1 03600351
WRITE (I02,80000) IVTNUM 03610351
IF (ICZERO) 10090, 0101, 20090 03620351
10090 IVPASS = IVPASS + 1 03630351
WRITE (I02,80002) IVTNUM 03640351
GO TO 0101 03650351
20090 IVFAIL = IVFAIL + 1 03660351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03670351
0101 CONTINUE 03680351
C 03690351
C **** FCVS PROGRAM 351 - TEST 010 **** 03700351
C 03710351
C TEST 10 EVALUATES AN INTEGER EXPRESSION WHICH CONTAINS 03720351
C FUNCTION REFERENCES NESTED TO THREE LEVELS. THE OUTER TWO 03730351
C LEVELS ARE STATEMENT FUNCTION REFERENCES AND THE INNERMOST LEVEL 03740351
C IS AN INTRINSIC FUNCTION REFERENCE. 03750351
C 03760351
IVTNUM = 10 03770351
IF (ICZERO) 30100, 0100, 30100 03780351
0100 CONTINUE 03790351
IVON01 = -51 03800351
IVON02 = 4 03810351
IVON03 = -101 03820351
IVON04 = 13 03830351
IVON05 = 3 03840351
IVON06 = 5 03850351
IVON07 = -37 03860351
IADN11(4) = 87 03870351
IADN11(5) = 409 03880351
IVCOMP = (IVON01 + IFOS03(IVON02,IVON03,IVON04)) * IVON05 - 03890351
1 IFOS04(IVON06,IVON07) 03900351
IVCORR = 6733 03910351
40100 IF (IVCOMP - 6733) 20100, 10100, 20100 03920351
30100 IVDELE = IVDELE + 1 03930351
WRITE (I02,80000) IVTNUM 03940351
IF (ICZERO) 10100, 0111, 20100 03950351
10100 IVPASS = IVPASS + 1 03960351
WRITE (I02,80002) IVTNUM 03970351
GO TO 0111 03980351
20100 IVFAIL = IVFAIL + 1 03990351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04000351
0111 CONTINUE 04010351
C 04020351
C TESTS 11 THROUGH 20 REPEAT TESTS 1 THROUGH 10 EXCEPT THAT 04030351
C TESTS 11 THROUGH 20 DEAL ENTIRELY WITH REAL ARITHMETIC 04040351
C EXPRESSIONS. 04050351
C 04060351
C 04070351
C **** FCVS PROGRAM 351 - TEST 011 **** 04080351
C 04090351
C TEST 11 TESTS A REAL EXPRESSION WHERE ALL FIVE ARITHMETIC 04100351
C OPERATORS ARE USED AND ALL OPERAND PRIMARIES ARE SIMPLE REAL 04110351
C VARIABLES. 04120351
C 04130351
IVTNUM = 11 04140351
IF (ICZERO) 30110, 0110, 30110 04150351
0110 CONTINUE 04160351
RVON01 = 3.2 04170351
RVON02 = 23.051 04180351
RVON03 = 1545 E7 04190351
RVON04 = -23.457 04200351
RVON05 = .02 E3 04210351
RVON06 = 7.210745323 E-10 04220351
RVCOMP = RVON01 ** RVON02 + RVON03 - RVON04 * RVON05 / RVON06 04230351
RVCORR = 1.10683 E12 04240351
40110 IF (RVCOMP - 1.1063 E12) 20110, 10110, 40111 04250351
40111 IF (RVCOMP - 1.1073 E12) 10110, 10110, 20110 04260351
30110 IVDELE = IVDELE + 1 04270351
WRITE (I02,80000) IVTNUM 04280351
IF (ICZERO) 10110, 0121, 20110 04290351
10110 IVPASS = IVPASS + 1 04300351
WRITE (I02,80002) IVTNUM 04310351
GO TO 0121 04320351
20110 IVFAIL = IVFAIL + 1 04330351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04340351
0121 CONTINUE 04350351
C 04360351
C **** FCVS PROGRAM 351 - TEST 012 **** 04370351
C 04380351
C TEST 12, LIKE TEST 11, CHECKS A REAL EXPRESSION WHERE ALL 04390351
C FIVE ARITHMETIC OPERATORS ARE USED AND ALL OPERANDS ARE REAL 04400351
C VARIABLES, BUT IN TEST 12, PARENTHESES ARE USED, AS IS ALSO A 04410351
C UNARY OPERATOR. 04420351
C 04430351
IVTNUM = 12 04440351
IF (ICZERO) 30120, 0120, 30120 04450351
0120 CONTINUE 04460351
RVON01 = 3.2 04470351
RVON02 = 23.051 04480351
RVON03 = 1545 E-3 04490351
RVON04 = 5.75 E-1 04500351
RVON05 = 2.22 E+1 04510351
RVCOMP = -(RVON01 / RVON02) + (RVON03 * RVON04 ** RVON05) 04520351
RVCORR = -.13882 04530351
40120 IF (RVCOMP + .13887) 20120, 10120, 40121 04540351
40121 IF (RVCOMP + .13877) 10120, 10120, 20120 04550351
30120 IVDELE = IVDELE + 1 04560351
WRITE (I02,80000) IVTNUM 04570351
IF (ICZERO) 10120, 0131, 20120 04580351
10120 IVPASS = IVPASS + 1 04590351
WRITE (I02,80002) IVTNUM 04600351
GO TO 0131 04610351
20120 IVFAIL = IVFAIL + 1 04620351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04630351
0131 CONTINUE 04640351
C 04650351
C **** FCVS PROGRAM 351 - TEST 013 **** 04660351
C 04670351
C TEST 13 IS SIMILAR TO TEST 12 EXCEPT THAT TEST 13 EMPLOYS 04680351
C NESTED PARENTHESES. 04690351
C 04700351
IVTNUM = 13 04710351
IF (ICZERO) 30130, 0130, 30130 04720351
0130 CONTINUE 04730351
RVON01 = 3.2 04740351
RVON02 = -63.051 04750351
RVON03 = 1545 E-3 04760351
RVON04 = 5.75 E-1 04770351
RVON05 = 2.22 E1 04780351
RVON06 = 0.523 04790351
RVCOMP = RVON01 ** (-(RVON02 + (RVON03 - RVON04)) - 04800351
1 (RVON05 / RVON06)) 04810351
RVCORR = 8.27757 E9 04820351
40130 IF (RVCOMP - 8.2770 E9) 20130, 10130, 40131 04830351
40131 IF (RVCOMP - 8.2780 E9) 10130, 10130, 20130 04840351
30130 IVDELE = IVDELE + 1 04850351
WRITE (I02,80000) IVTNUM 04860351
IF (ICZERO) 10130, 0141, 20130 04870351
10130 IVPASS = IVPASS + 1 04880351
WRITE (I02,80002) IVTNUM 04890351
GO TO 0141 04900351
20130 IVFAIL = IVFAIL + 1 04910351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04920351
0141 CONTINUE 04930351
C 04940351
C **** FCVS PROGRAM 351 - TEST 014 **** 04950351
C 04960351
C TEST 14 IS SIMILAR TO TESTS 12 AND 13 EXCEPT THAT THE 04970351
C PARENTHESES USED ARE EFFECTIVELY EXTRANEOUS. 04980351
C 04990351
IVTNUM = 14 05000351
IF (ICZERO) 30140, 0140, 30140 05010351
0140 CONTINUE 05020351
RVON01 = 5.4515 E18 05030351
RVON02 = .076923 05040351
RVON03 = 23 E-2 05050351
RVON04 = 7 E7 05060351
RVON05 = 45.23 E5 05070351
RVON06 = 5.65375 E12 05080351
RVCOMP = ((RVON01) ** (RVON02) + (RVON03) - (RVON04) * (RVON05) / 05090351
1 (RVON06)) 05100351
RVCORR = -28.147 05110351
40140 IF (RVCOMP + 28.152) 20140, 10140, 40141 05120351
40141 IF (RVCOMP + 28.142) 10140, 10140, 20140 05130351
30140 IVDELE = IVDELE + 1 05140351
WRITE (I02,80000) IVTNUM 05150351
IF (ICZERO) 10140, 0151, 20140 05160351
10140 IVPASS = IVPASS + 1 05170351
WRITE (I02,80002) IVTNUM 05180351
GO TO 0151 05190351
20140 IVFAIL = IVFAIL + 1 05200351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05210351
0151 CONTINUE 05220351
C 05230351
C **** FCVS PROGRAM 351 - TEST 015 **** 05240351
C 05250351
C TEST 15 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY 05260351
C REAL VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, AND 05270351
C USING PARENTHESES TO OVERRIDE PRECEDENCES. 05280351
C 05290351
IVTNUM = 15 05300351
IF (ICZERO) 30150, 0150, 30150 05310351
0150 CONTINUE 05320351
RVON01 = .11341 E1 05330351
RVON02 = 7.1417 05340351
RVON03 = 5.2113 E1 05350351
RVON04 = 10.001 05360351
RVON05 = 7.241 E5 05370351
RVON06 = 5.7777 E-3 05380351
RVCOMP = -RVON01 ** (RVON02 + RVON03 - RVON04) * (RVON05 / RVON06)05390351
RVCORR = -6.1635 E10 05400351
40150 IF (RVCOMP + 6.1640 E10) 20150, 10150, 40151 05410351
40151 IF (RVCOMP + 6.1630 E10) 10150, 10150, 20150 05420351
30150 IVDELE = IVDELE + 1 05430351
WRITE (I02,80000) IVTNUM 05440351
IF (ICZERO) 10150, 0161, 20150 05450351
10150 IVPASS = IVPASS + 1 05460351
WRITE (I02,80002) IVTNUM 05470351
GO TO 0161 05480351
20150 IVFAIL = IVFAIL + 1 05490351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05500351
0161 CONTINUE 05510351
C 05520351
C **** FCVS PROGRAM 351 - TEST 016 **** 05530351
C 05540351
C TEST 16 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY 05550351
C REAL VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, AND 05560351
C USING PARENTHESES TO OVERRIDE PRECEDENCES. 05570351
C 05580351
IVTNUM = 16 05590351
IF (ICZERO) 30160, 0160, 30160 05600351
0160 CONTINUE 05610351
RVON01 = 6.4003 E18 05620351
RVON02 = -3.7717 E-2 05630351
RVON03 = -5.1195 E3 05640351
RVON04 = 1.7521 E14 05650351
RVON05 = 1.0533 E3 05660351
RVON06 = -9.4207 E11 05670351
RVCOMP = ((RVON01 * (RVON02 / RVON03)) + RVON04) / RVON05 - 05680351
1 (-RVON06) 05690351
RVCORR = -7.3096 E11 05700351
40160 IF (RVCOMP + 7.3101 E11) 20160, 10160, 40161 05710351
40161 IF (RVCOMP + 7.3091 E11) 10160, 10160, 20160 05720351
30160 IVDELE = IVDELE + 1 05730351
WRITE (I02,80000) IVTNUM 05740351
IF (ICZERO) 10160, 0171, 20160 05750351
10160 IVPASS = IVPASS + 1 05760351
WRITE (I02,80002) IVTNUM 05770351
GO TO 0171 05780351
20160 IVFAIL = IVFAIL + 1 05790351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05800351
0171 CONTINUE 05810351
C 05820351
C **** FCVS PROGRAM 351 - TEST 017 **** 05830351
C 05840351
C IN TEST 17, A REAL EXPRESSION INVOLVING ALL FIVE ARITHMETIC 05850351
C OPERATORS IS EVALUATED, BUT UNLIKE TESTS 11 THROUGH 16 WHERE 05860351
C ALL OPERANDS WERE REAL VARIABLES, THE OPERANDS IN TEST 17 ARE 05870351
C CLASSED AS REAL VARIABLES, REAL CONSTANTS, REAL ARRAY ELEMENTS, 05880351
C AND REAL FUNCTION REFERENCES. 05890351
C 05900351
IVTNUM = 17 05910351
IF (ICZERO) 30170, 0170, 30170 05920351
0170 CONTINUE 05930351
RVON01 = 5.247 E10 05940351
IVON01 = 3 05950351
RVON02 = 1.07 E1 05960351
RVON03 = 5.23 05970351
RVON04 = 1.001 05980351
RVON05 = 1.573 05990351
RADN11(3) = 0.3947 E18 06000351
RVCOMP = (RVON01 + 3.491 E10) - (4 E17 + RADN11(IVON01)) / 06010351
1 (RFOS01(RVON03,RVON04,RVON05) ** RVON02) 06020351
RVCORR = 7.1526 E10 06030351
40170 IF (RVCOMP - 7.1521 E10) 20170, 10170, 40171 06040351
40171 IF (RVCOMP - 7.1531 E10) 10170, 10170, 20170 06050351
30170 IVDELE = IVDELE + 1 06060351
WRITE (I02,80000) IVTNUM 06070351
IF (ICZERO) 10170, 0181, 20170 06080351
10170 IVPASS = IVPASS + 1 06090351
WRITE (I02,80002) IVTNUM 06100351
GO TO 0181 06110351
20170 IVFAIL = IVFAIL + 1 06120351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06130351
0181 CONTINUE 06140351
C 06150351
C **** FCVS PROGRAM 351 - TEST 018 **** 06160351
C 06170351
C TEST 18 IS IDENTICAL TO TEST 17 EXCEPT THAT PARENTHESES ARE 06180351
C USED TO CHANGE THE ORDER OF SUB-EXPRESSION EVALUATION. 06190351
C 06200351
IVTNUM = 18 06210351
IF (ICZERO) 30180, 0180, 30180 06220351
0180 CONTINUE 06230351
RVON01 = 5.247 E10 06240351
IVON01 = 3 06250351
RVON02 = 1.07 E1 06260351
RVON03 = 5.23 06270351
RVON04 = 1.001 06280351
RVON05 = 1.573 06290351
RADN11(3) = 0.3947 E18 06300351
RVCOMP = ((RVON01 + 3.491 E10) - (4 E17 + RADN11(IVON01))) / 06310351
1 RFOS01(RVON03,RVON04,RVON05) ** RVON02 06320351
RVCORR = -1.5854 E10 06330351
40180 IF (RVCOMP + 1.5859 E10) 20180, 10180, 40181 06340351
40181 IF (RVCOMP + 1.5849 E10) 10180, 10180, 20180 06350351
30180 IVDELE = IVDELE + 1 06360351
WRITE (I02,80000) IVTNUM 06370351
IF (ICZERO) 10180, 0191, 20180 06380351
10180 IVPASS = IVPASS + 1 06390351
WRITE (I02,80002) IVTNUM 06400351
GO TO 0191 06410351
20180 IVFAIL = IVFAIL + 1 06420351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06430351
0191 CONTINUE 06440351
C 06450351
C **** FCVS PROGRAM 351 - TEST 019 **** 06460351
C 06470351
C TEST 19 IS SIMILAR TO TESTS 17 AND 18 EXCEPT THAT THE 06480351
C FUNCTION REFERENCES IN TURN EVALUATE ARRAY ELEMENTS. 06490351
C 06500351
IVTNUM = 19 06510351
IF (ICZERO) 30190, 0190, 30190 06520351
0190 CONTINUE 06530351
RVON01 = 5.026 E2 06540351
RVON02 = 1.386 E1 06550351
IVON03 = 2 06560351
RVON04 = 1.9999 06570351
RVON05 = 4.0127 06580351
RADN11(1) = 3.004 E18 06590351
RADN11(2) = 2.5705 E-1 06600351
RADN11(4) = 7.993 E16 06610351
RVCOMP = (RVON01 - 5.902 * RFOS02(INT(RVON04),INT(RVON05))) / 06620351
1 RADN11(IVON03) + 1.5372 ** RVON02 06630351
RVCORR = 1.4797 E3 06640351
40190 IF (RVCORR - 1.4792 E3) 20190, 10190, 40191 06650351
40191 IF (RVCORR - 1.4802 E3) 10190, 10190, 20190 06660351
30190 IVDELE = IVDELE + 1 06670351
WRITE (I02,80000) IVTNUM 06680351
IF (ICZERO) 10190, 0201, 20190 06690351
10190 IVPASS = IVPASS + 1 06700351
WRITE (I02,80002) IVTNUM 06710351
GO TO 0201 06720351
20190 IVFAIL = IVFAIL + 1 06730351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06740351
0201 CONTINUE 06750351
C 06760351
C **** FCVS PROGRAM 351 - TEST 020 **** 06770351
C 06780351
C TEST 20 EVALUATES A REAL EXPRESSION WHICH CONTAINS FUNCTION 06790351
C REFERENCES NESTED TO THREE LEVELS. THE OUTER TWO LEVELS ARE 06800351
C STATEMENT FUNCTION REFERENCES AND THE INNERMOST LEVEL IS AN 06810351
C INTRINSIC FUNCTION REFERENCE. 06820351
C 06830351
IVTNUM = 20 06840351
IF (ICZERO) 30200, 0200, 30200 06850351
0200 CONTINUE 06860351
RVON01 = 4.7117 E05 06870351
RVON02 = 5.987 06880351
RVON03 = 2.00000 E5 06890351
RVON04 = 1.0 E2 06900351
RVON05 = 1.5222 E9 06910351
IVON06 = 4 06920351
RVON07 = -3.2107 E14 06930351
RADN11(4) = 7.425 E14 06940351
RADN11(5) = -2.4015 E5 06950351
RVCOMP = (RVON01 + RFOS03(RVON02,RVON03,RVON04)) * RVON05 - 06960351
1 RFOS04(IVON06,RVON07) 06970351
RVCORR = -6.4580 E15 06980351
40200 IF (RVCOMP + 6.4585 E15) 20200, 10200, 40201 06990351
40201 IF (RVCOMP + 6.4575 E15) 10200, 10200, 20200 07000351
30200 IVDELE = IVDELE + 1 07010351
WRITE (I02,80000) IVTNUM 07020351
IF (ICZERO) 10200, 0211, 20200 07030351
10200 IVPASS = IVPASS + 1 07040351
WRITE (I02,80002) IVTNUM 07050351
GO TO 0211 07060351
20200 IVFAIL = IVFAIL + 1 07070351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07080351
0211 CONTINUE 07090351
C 07100351
C TESTS 21 THROUGH 25 DEAL WITH MIXTURES OF REAL AND INTEGER 07110351
C EXPRESSIONS; I.E., THESE ARE TESTS WHICH EVALUATE EXPRESSIONS 07120351
C CONTAINING BOTH REAL SUB-EXPRESSIONS AND INTEGER SUB-EXPRESSIONS 07130351
C AND THEN ASSIGN THE RESULTS TO EITHER AN INTEGER OR A REAL 07140351
C VARIABLE. 07150351
C 07160351
C 07170351
C **** FCVS PROGRAM 351 - TEST 021 **** 07180351
C 07190351
C TEST 21 USES ALL FIVE ARITHMETIC OPERATORS AND A COMBINATION 07200351
C OF INTEGER AND REAL VARIABLES. NO PARENTHESES ARE USED. FINAL 07210351
C ASSIGNMENT IS TO AN INTEGER VARIABLE. 07220351
C 07230351
IVTNUM = 21 07240351
IF (ICZERO) 30210, 0210, 30210 07250351
0210 CONTINUE 07260351
IVON01 = 17 07270351
IVON02 = 3 07280351
RVON03 = 5.4732 E+2 07290351
RVON04 = 1.523 07300351
IVON05 = 798 07310351
IVCOMP = IVON01 ** IVON02 + RVON03 - RVON04 * IVON05 / IVON01 07320351
IVCORR = 5388 07330351
40210 IF (IVCOMP - 5388) 20210, 10210, 20210 07340351
30210 IVDELE = IVDELE + 1 07350351
WRITE (I02,80000) IVTNUM 07360351
IF (ICZERO) 10210, 0221, 20210 07370351
10210 IVPASS = IVPASS + 1 07380351
WRITE (I02,80002) IVTNUM 07390351
GO TO 0221 07400351
20210 IVFAIL = IVFAIL + 1 07410351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07420351
0221 CONTINUE 07430351
C 07440351
C **** FCVS PROGRAM 351 - TEST 022 **** 07450351
C 07460351
C TEST 22 IS LIKE TEST 21 EXCEPT THAT PARENTHESES ARE USED, 07470351
C AS IS A UNARY OPERATOR. FINAL ASSIGNMENT IS TO A REAL VARIABLE. 07480351
C 07490351
IVTNUM = 22 07500351
IF (ICZERO) 30220, 0220, 30220 07510351
0220 CONTINUE 07520351
IVON01 = 798 07530351
IVON02 = 17 07540351
RVON03 = 9.34578 E-2 07550351
IVON04 = 15985 07560351
RVON05 = 0.72357 07570351
RVCOMP = -(IVON01 / IVON02) + (RVON03 * IVON04 ** RVON05) 07580351
RVCORR = 5.68717 E1 07590351
40220 IF (RVCOMP - 5.6866 E1) 20220, 10220, 40221 07600351
40221 IF (RVCOMP - 5.6876 E1) 10220, 10220, 20220 07610351
30220 IVDELE = IVDELE + 1 07620351
WRITE (I02,80000) IVTNUM 07630351
IF (ICZERO) 10220, 0231, 20220 07640351
10220 IVPASS = IVPASS + 1 07650351
WRITE (I02,80002) IVTNUM 07660351
GO TO 0231 07670351
20220 IVFAIL = IVFAIL + 1 07680351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07690351
0231 CONTINUE 07700351
C 07710351
C **** FCVS PROGRAM 351 - TEST 023 **** 07720351
C 07730351
C TEST 23 IS SIMILAR TO TEST 22 EXCEPT THAT IT EMPLOYS NESTED 07740351
C PARENTHESES. 07750351
C 07760351
IVTNUM = 23 07770351
IF (ICZERO) 30230, 0230, 30230 07780351
0230 CONTINUE 07790351
IVON01 = 2 07800351
IVON02 = 183 07810351
RVON03 = 58.7025 07820351
IVON04 = 197 07830351
IVON05 = 87 07840351
RVON06 = 2.4611 E15 07850351
RVCOMP = IVON01 ** (-(IVON02 + (RVON03 - IVON04)) - 07860351
1 (IVON05 / RVON06)) 07870351
RVCORR = 3.4931 E-14 07880351
40230 IF (RVCOMP - 3.4926 E-14) 20230, 10230, 40231 07890351
40231 IF (RVCOMP - 3.4936 E-14) 10230, 10230, 20230 07900351
30230 IVDELE = IVDELE + 1 07910351
WRITE (I02,80000) IVTNUM 07920351
IF (ICZERO) 10230, 0241, 20230 07930351
10230 IVPASS = IVPASS + 1 07940351
WRITE (I02,80002) IVTNUM 07950351
GO TO 0241 07960351
20230 IVFAIL = IVFAIL + 1 07970351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07980351
0241 CONTINUE 07990351
C 08000351
C **** FCVS PROGRAM 351 - TEST 024 **** 08010351
C 08020351
C TEST 24 IS IDENTICAL TO TEST 23 EXCEPT THAT THE FINAL 08030351
C ASSIGNMENT IS TO AN INTEGER VARIABLE INSTEAD OF A REAL VARIABLE. 08040351
C 08050351
IVTNUM = 24 08060351
IF (ICZERO) 30240, 0240, 30240 08070351
0240 CONTINUE 08080351
IVON01 = 2 08090351
IVON02 = 183 08100351
RVON03 = 58.7025 08110351
IVON04 = 197 08120351
IVON05 = 87 08130351
RVON06 = 2.4611 E15 08140351
IVCOMP = IVON01 ** (-(IVON02 + (RVON03 - IVON04)) - 08150351
1 (IVON05 / RVON06)) 08160351
IVCORR = 0 08170351
40240 IF (IVCOMP) 20240, 10240, 20240 08180351
30240 IVDELE = IVDELE + 1 08190351
WRITE (I02,80000) IVTNUM 08200351
IF (ICZERO) 10240, 0251, 20240 08210351
10240 IVPASS = IVPASS + 1 08220351
WRITE (I02,80002) IVTNUM 08230351
GO TO 0251 08240351
20240 IVFAIL = IVFAIL + 1 08250351
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08260351
0251 CONTINUE 08270351
C 08280351
C **** FCVS PROGRAM 351 - TEST 025 **** 08290351
C 08300351
C TEST 25 IS SIMILAR TO TESTS 9 AND 19 EXCEPT THAT A MIXTURE 08310351
C OF REAL AND INTEGER OPERANDS ARE USED, AND FINAL ASSIGNMENT IS 08320351
C TO A REAL VARIABLE. 08330351
C 08340351
IVTNUM = 25 08350351
IF (ICZERO) 30250, 0250, 30250 08360351
0250 CONTINUE 08370351
RVON01 = 4.7117 08380351
RVON02 = 5.998 08390351
IVON03 = 2 08400351
RVON04 = 1E2 08410351
IVON05 = 20 08420351
IVON06 = 4 08430351
IVON07 = -3 08440351
RADN11(4) = 7.425 08450351
RADN11(5) = -2.4015 08460351
RVCOMP = (RVON01 + RFOS06(AINT(RVON02),IVON03,RVON04)) * IVON05 - 08470351
1 IFOS05(IVON06,IVON07) 08480351
RVCORR = 84.234 08490351
40250 IF (RVCOMP - 84.229) 20250, 10250, 40251 08500351
40251 IF (RVCOMP - 84.239) 10250, 10250, 20250 08510351
30250 IVDELE = IVDELE + 1 08520351
WRITE (I02,80000) IVTNUM 08530351
IF (ICZERO) 10250, 0261, 20250 08540351
10250 IVPASS = IVPASS + 1 08550351
WRITE (I02,80002) IVTNUM 08560351
GO TO 0261 08570351
20250 IVFAIL = IVFAIL + 1 08580351
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08590351
0261 CONTINUE 08600351
C 08610351
C 08620351
C WRITE OUT TEST SUMMARY 08630351
C 08640351
WRITE (I02,90004) 08650351
WRITE (I02,90014) 08660351
WRITE (I02,90004) 08670351
WRITE (I02,90000) 08680351
WRITE (I02,90004) 08690351
WRITE (I02,90020) IVFAIL 08700351
WRITE (I02,90022) IVPASS 08710351
WRITE (I02,90024) IVDELE 08720351
STOP 08730351
90001 FORMAT (" ",24X,"FM351") 08740351
90000 FORMAT (" ",20X,"END OF PROGRAM FM351" ) 08750351
C 08760351
C FORMATS FOR TEST DETAIL LINES 08770351
C 08780351
80000 FORMAT (" ",4X,I5,6X,"DELETED") 08790351
80002 FORMAT (" ",4X,I5,7X,"PASS") 08800351
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08810351
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08820351
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 08830351
C 08840351
C FORMAT STATEMENTS FOR PAGE HEADERS 08850351
C 08860351
90002 FORMAT ("1") 08870351
90004 FORMAT (" ") 08880351
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08890351
90008 FORMAT (" ",21X,"VERSION 2.1" ) 08900351
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08910351
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 08920351
90014 FORMAT (" ",5X,"----------------------------------------------" ) 08930351
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08940351
C 08950351
C FORMAT STATEMENTS FOR RUN SUMMARY 08960351
C 08970351
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 08980351
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 08990351
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 09000351
END 09010351