blob: cb7802db490fd28ee5e4fc56c0870763290b5a29 [file] [log] [blame]
PROGRAM FM099
C COMMENT SECTION 00010099
C 00020099
C FM099 00030099
C 00040099
C THIS ROUTINE TESTS VARIOUS MATHEMATICAL FUNCTIONS WHERE BOTH THE 00050099
C FUNCTION TYPE AND ARGUMENTS ARE REAL. THE REAL VARIABLES AND 00060099
C CONSTANTS CONTAIN BOTH POSITIVE AND NEGATIVE VALUES. THE 00070099
C FUNCTIONS TESTED IN FM099 INCLUDE 00080099
C 00090099
C TYPE OF 00100099
C FUNCTION NAME ARGUMENT FUNCTION 00110099
C ---------------- ---- -------- -------- 00120099
C EXPONENTIAL EXP REAL REAL 00130099
C NATURAL LOGARITHM ALOG REAL REAL 00140099
C COMMON LOGARITHM ALOG10 REAL REAL 00150099
C SQUARE ROOT SQRT REAL REAL 00160099
C TRIGONOMETRIC SINE SIN REAL REAL 00170099
C TRIGONOMETRIC COSINE COS REAL REAL 00180099
C HYPERBOLIC TANGENT TANH REAL REAL 00190099
C ARCTANGENT ATAN REAL REAL 00200099
C ATAN2 REAL REAL 00210099
C 00220099
C REFERENCES 00230099
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00240099
C X3.9-1978 00250099
C 00260099
C SECTION 8.7, EXTERNAL STATEMENT 00270099
C SECTION 15.5.2, FUNCTION REFERENCE 00280099
C 00290099
C 00300099
C ********************************************************** 00310099
C 00320099
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00330099
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00340099
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00350099
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00360099
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00370099
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00380099
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00390099
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00400099
C OF EXECUTING THESE TESTS. 00410099
C 00420099
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00430099
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00440099
C 00450099
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00460099
C 00470099
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00480099
C SOFTWARE STANDARDS VALIDATION GROUP 00490099
C BUILDING 225 RM A266 00500099
C GAITHERSBURG, MD 20899 00510099
C ********************************************************** 00520099
C 00530099
C 00540099
C 00550099
C INITIALIZATION SECTION 00560099
C 00570099
C INITIALIZE CONSTANTS 00580099
C ************** 00590099
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00600099
I01 = 5 00610099
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00620099
I02 = 6 00630099
C SYSTEM ENVIRONMENT SECTION 00640099
C 00650099
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00660099
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00670099
C (UNIT NUMBER FOR CARD READER). 00680099
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00690099
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00700099
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00710099
C 00720099
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00730099
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00740099
C (UNIT NUMBER FOR PRINTER). 00750099
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00760099
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770099
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00780099
C 00790099
IVPASS=0 00800099
IVFAIL=0 00810099
IVDELE=0 00820099
ICZERO=0 00830099
C 00840099
C WRITE PAGE HEADERS 00850099
WRITE (I02,90000) 00860099
WRITE (I02,90001) 00870099
WRITE (I02,90002) 00880099
WRITE (I02, 90002) 00890099
WRITE (I02,90003) 00900099
WRITE (I02,90002) 00910099
WRITE (I02,90004) 00920099
WRITE (I02,90002) 00930099
WRITE (I02,90011) 00940099
WRITE (I02,90002) 00950099
WRITE (I02,90002) 00960099
WRITE (I02,90005) 00970099
WRITE (I02,90006) 00980099
WRITE (I02,90002) 00990099
C 01000099
C TEST SECTION 01010099
C 01020099
C TEST 939 THROUGH TEST 942 CONTAIN FUNCTION TESTS FOR EXPONENTIAL 01030099
C FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 01040099
C 01050099
IVTNUM = 939 01060099
C 01070099
C **** TEST 939 **** 01080099
C 01090099
IF (ICZERO) 39390, 9390, 39390 01100099
9390 CONTINUE 01110099
RVON01 = 0.0 01120099
RVCOMP = EXP (RVON01) 01130099
GO TO 49390 01140099
39390 IVDELE = IVDELE + 1 01150099
WRITE (I02,80003) IVTNUM 01160099
IF (ICZERO) 49390, 9401, 49390 01170099
49390 IF (RVCOMP - 0.95) 29390,19390,49391 01180099
49391 IF (RVCOMP - 1.05) 19390,19390,29390 01190099
19390 IVPASS = IVPASS + 1 01200099
WRITE (I02,80001) IVTNUM 01210099
GO TO 9401 01220099
29390 IVFAIL = IVFAIL + 1 01230099
RVCORR = 1.00 01240099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01250099
9401 CONTINUE 01260099
IVTNUM = 940 01270099
C 01280099
C **** TEST 940 **** 01290099
C 01300099
IF (ICZERO) 39400, 9400, 39400 01310099
9400 CONTINUE 01320099
RVCOMP = EXP (0.5) 01330099
GO TO 49400 01340099
39400 IVDELE = IVDELE + 1 01350099
WRITE (I02,80003) IVTNUM 01360099
IF (ICZERO) 49400, 9411, 49400 01370099
49400 IF (RVCOMP - 1.60) 29400,19400,49401 01380099
49401 IF (RVCOMP - 1.70) 19400,19400,29400 01390099
19400 IVPASS = IVPASS + 1 01400099
WRITE (I02,80001) IVTNUM 01410099
GO TO 9411 01420099
29400 IVFAIL = IVFAIL + 1 01430099
RVCORR = 1.65 01440099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01450099
9411 CONTINUE 01460099
IVTNUM = 941 01470099
C 01480099
C **** TEST 941 **** 01490099
C 01500099
IF (ICZERO) 39410, 9410, 39410 01510099
9410 CONTINUE 01520099
RVON01 = .1E1 01530099
RVCOMP = EXP (RVON01) 01540099
GO TO 49410 01550099
39410 IVDELE = IVDELE + 1 01560099
WRITE (I02,80003) IVTNUM 01570099
IF (ICZERO) 49410, 9421, 49410 01580099
49410 IF (RVCOMP - 2.67) 29410,19410,49411 01590099
49411 IF (RVCOMP - 2.77) 19410,19410,29410 01600099
19410 IVPASS = IVPASS + 1 01610099
WRITE (I02,80001) IVTNUM 01620099
GO TO 9421 01630099
29410 IVFAIL = IVFAIL + 1 01640099
RVCORR = 2.72 01650099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01660099
9421 CONTINUE 01670099
IVTNUM = 942 01680099
C 01690099
C **** TEST 942 **** 01700099
C 01710099
IF (ICZERO) 39420, 9420, 39420 01720099
9420 CONTINUE 01730099
RVON01 = -1.0 01740099
RVCOMP = EXP (RVON01) 01750099
GO TO 49420 01760099
39420 IVDELE = IVDELE + 1 01770099
WRITE (I02,80003) IVTNUM 01780099
IF (ICZERO) 49420, 9431, 49420 01790099
49420 IF (RVCOMP - 0.363) 29420,19420,49421 01800099
49421 IF (RVCOMP - 0.373) 19420,19420,29420 01810099
19420 IVPASS = IVPASS + 1 01820099
WRITE (I02,80001) IVTNUM 01830099
GO TO 9431 01840099
29420 IVFAIL = IVFAIL + 1 01850099
RVCORR = 0.368 01860099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01870099
9431 CONTINUE 01880099
C 01890099
C TEST 943 THROUGH TEST 945 CONTAIN FUNCTION TESTS FOR NATURAL 01900099
C LOGARITHM FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 01910099
C 01920099
IVTNUM = 943 01930099
C 01940099
C **** TEST 943 **** 01950099
C 01960099
IF (ICZERO) 39430, 9430, 39430 01970099
9430 CONTINUE 01980099
RVON01 = 5E1 01990099
RVCOMP = ALOG (RVON01) 02000099
GO TO 49430 02010099
39430 IVDELE = IVDELE + 1 02020099
WRITE (I02,80003) IVTNUM 02030099
IF (ICZERO) 49430, 9441, 49430 02040099
49430 IF (RVCOMP - 3.9115) 29430,19430,49431 02050099
49431 IF (RVCOMP - 3.9125) 19430,19430,29430 02060099
19430 IVPASS = IVPASS + 1 02070099
WRITE (I02,80001) IVTNUM 02080099
GO TO 9441 02090099
29430 IVFAIL = IVFAIL + 1 02100099
RVCORR = 3.9120 02110099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02120099
9441 CONTINUE 02130099
IVTNUM = 944 02140099
C 02150099
C **** TEST 944 **** 02160099
C 02170099
IF (ICZERO) 39440, 9440, 39440 02180099
9440 CONTINUE 02190099
RVON01 = 1.0 02200099
RVCOMP = ALOG (RVON01) 02210099
GO TO 49440 02220099
39440 IVDELE = IVDELE + 1 02230099
WRITE (I02,80003) IVTNUM 02240099
IF (ICZERO) 49440, 9451, 49440 02250099
49440 IF (RVCOMP + .00005) 29440,19440,49441 02260099
49441 IF (RVCOMP - .00005) 19440,19440,29440 02270099
19440 IVPASS = IVPASS + 1 02280099
WRITE (I02,80001) IVTNUM 02290099
GO TO 9451 02300099
29440 IVFAIL = IVFAIL + 1 02310099
RVCORR = 0.00000 02320099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02330099
9451 CONTINUE 02340099
IVTNUM = 945 02350099
C 02360099
C **** TEST 945 **** 02370099
C 02380099
IF (ICZERO) 39450, 9450, 39450 02390099
9450 CONTINUE 02400099
RVCOMP = ALOG (2.0) 02410099
GO TO 49450 02420099
39450 IVDELE = IVDELE + 1 02430099
WRITE (I02,80003) IVTNUM 02440099
IF (ICZERO) 49450, 9461, 49450 02450099
49450 IF (RVCOMP - 0.688) 29450,19450,49451 02460099
49451 IF (RVCOMP - 0.698) 19450,19450,29450 02470099
19450 IVPASS = IVPASS + 1 02480099
WRITE (I02,80001) IVTNUM 02490099
GO TO 9461 02500099
29450 IVFAIL = IVFAIL + 1 02510099
RVCORR = 0.693 02520099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02530099
9461 CONTINUE 02540099
C 02550099
C TEST 946 THROUGH TEST 948 CONTAIN FUNCTION TESTS FOR COMMON 02560099
C LOGARITHM FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 02570099
C 02580099
IVTNUM = 946 02590099
C 02600099
C **** TEST 946 **** 02610099
C 02620099
IF (ICZERO) 39460, 9460, 39460 02630099
9460 CONTINUE 02640099
RVON01 = 2E2 02650099
RVCOMP = ALOG10 (RVON01) 02660099
GO TO 49460 02670099
39460 IVDELE = IVDELE + 1 02680099
WRITE (I02,80003) IVTNUM 02690099
IF (ICZERO) 49460, 9471, 49460 02700099
49460 IF (RVCOMP - 2.296) 29460,19460,49461 02710099
49461 IF (RVCOMP - 2.306) 19460,19460,29460 02720099
19460 IVPASS = IVPASS + 1 02730099
WRITE (I02,80001) IVTNUM 02740099
GO TO 9471 02750099
29460 IVFAIL = IVFAIL + 1 02760099
RVCORR = 2.301 02770099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02780099
9471 CONTINUE 02790099
IVTNUM = 947 02800099
C 02810099
C **** TEST 947 **** 02820099
C 02830099
IF (ICZERO) 39470, 9470, 39470 02840099
9470 CONTINUE 02850099
RVON01 = .3E+3 02860099
RVCOMP = ALOG10 (RVON01) 02870099
GO TO 49470 02880099
39470 IVDELE = IVDELE + 1 02890099
WRITE (I02,80003) IVTNUM 02900099
IF (ICZERO) 49470, 9481, 49470 02910099
49470 IF (RVCOMP - 2.472) 29470,19470,49471 02920099
49471 IF (RVCOMP - 2.482) 19470,19470,29470 02930099
19470 IVPASS = IVPASS + 1 02940099
WRITE (I02,80001) IVTNUM 02950099
GO TO 9481 02960099
29470 IVFAIL = IVFAIL + 1 02970099
RVCORR = 2.477 02980099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02990099
9481 CONTINUE 03000099
IVTNUM = 948 03010099
C 03020099
C **** TEST 948 **** 03030099
C 03040099
IF (ICZERO) 39480, 9480, 39480 03050099
9480 CONTINUE 03060099
RVON01 = 1350.0 03070099
RVCOMP = ALOG10 (RVON01) 03080099
GO TO 49480 03090099
39480 IVDELE = IVDELE + 1 03100099
WRITE (I02,80003) IVTNUM 03110099
IF (ICZERO) 49480, 9491, 49480 03120099
49480 IF (RVCOMP - 3.125) 29480,19480,49481 03130099
49481 IF (RVCOMP - 3.135) 19480,19480,29480 03140099
19480 IVPASS = IVPASS + 1 03150099
WRITE (I02,80001) IVTNUM 03160099
GO TO 9491 03170099
29480 IVFAIL = IVFAIL + 1 03180099
RVCORR = 3.130 03190099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03200099
9491 CONTINUE 03210099
C 03220099
C TEST 949 THROUGH TEST 951 CONTAIN FUNCTION TESTS FOR SQUARE ROOT 03230099
C FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 03240099
C 03250099
IVTNUM = 949 03260099
C 03270099
C **** TEST 949 **** 03280099
C 03290099
IF (ICZERO) 39490, 9490, 39490 03300099
9490 CONTINUE 03310099
RVON01 = 1.0 03320099
RVCOMP = SQRT (RVON01) 03330099
GO TO 49490 03340099
39490 IVDELE = IVDELE + 1 03350099
WRITE (I02,80003) IVTNUM 03360099
IF (ICZERO) 49490, 9501, 49490 03370099
49490 IF (RVCOMP - 0.95) 29490,19490,49491 03380099
49491 IF (RVCOMP - 1.05) 19490,19490,29490 03390099
19490 IVPASS = IVPASS + 1 03400099
WRITE (I02,80001) IVTNUM 03410099
GO TO 9501 03420099
29490 IVFAIL = IVFAIL + 1 03430099
RVCORR = 1.00 03440099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03450099
9501 CONTINUE 03460099
IVTNUM = 950 03470099
C 03480099
C **** TEST 950 **** 03490099
C 03500099
IF (ICZERO) 39500, 9500, 39500 03510099
9500 CONTINUE 03520099
RVCOMP = SQRT (2.0) 03530099
GO TO 49500 03540099
39500 IVDELE = IVDELE + 1 03550099
WRITE (I02,80003) IVTNUM 03560099
IF (ICZERO) 49500, 9511, 49500 03570099
49500 IF (RVCOMP - 1.36) 29500,19500,49501 03580099
49501 IF (RVCOMP - 1.46) 19500,19500,29500 03590099
19500 IVPASS = IVPASS + 1 03600099
WRITE (I02,80001) IVTNUM 03610099
GO TO 9511 03620099
29500 IVFAIL = IVFAIL + 1 03630099
RVCORR = 1.41 03640099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03650099
9511 CONTINUE 03660099
IVTNUM = 951 03670099
C 03680099
C **** TEST 951 **** 03690099
C 03700099
IF (ICZERO) 39510, 9510, 39510 03710099
9510 CONTINUE 03720099
RVON01 = .229E1 03730099
RVCOMP = SQRT (RVON01) 03740099
GO TO 49510 03750099
39510 IVDELE = IVDELE + 1 03760099
WRITE (I02,80003) IVTNUM 03770099
IF (ICZERO) 49510, 9521, 49510 03780099
49510 IF (RVCOMP - 1.46) 29510,19510,49511 03790099
49511 IF (RVCOMP - 1.56) 19510,19510,29510 03800099
19510 IVPASS = IVPASS + 1 03810099
WRITE (I02,80001) IVTNUM 03820099
GO TO 9521 03830099
29510 IVFAIL = IVFAIL + 1 03840099
RVCORR = 1.51 03850099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03860099
9521 CONTINUE 03870099
C 03880099
C TEST 952 THROUGH TEST 953 CONTAIN FUNCTION TESTS FOR TRIGONOMETRIC03890099
C SINE FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 03900099
C 03910099
IVTNUM = 952 03920099
C 03930099
C **** TEST 952 **** 03940099
C 03950099
IF (ICZERO) 39520, 9520, 39520 03960099
9520 CONTINUE 03970099
RVON01 = 0.00000 03980099
RVCOMP = SIN (RVON01) 03990099
GO TO 49520 04000099
39520 IVDELE = IVDELE + 1 04010099
WRITE (I02,80003) IVTNUM 04020099
IF (ICZERO) 49520, 9531, 49520 04030099
49520 IF (RVCOMP + .00005) 29520,19520,49521 04040099
49521 IF (RVCOMP - .00005) 19520,19520,29520 04050099
19520 IVPASS = IVPASS + 1 04060099
WRITE (I02,80001) IVTNUM 04070099
GO TO 9531 04080099
29520 IVFAIL = IVFAIL + 1 04090099
RVCORR = 0.00000 04100099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04110099
9531 CONTINUE 04120099
IVTNUM = 953 04130099
C 04140099
C **** TEST 953 **** 04150099
C 04160099
IF (ICZERO) 39530, 9530, 39530 04170099
9530 CONTINUE 04180099
RVON01 = 0.5 04190099
RVCOMP = SIN (RVON01) 04200099
GO TO 49530 04210099
39530 IVDELE = IVDELE + 1 04220099
WRITE (I02,80003) IVTNUM 04230099
IF (ICZERO) 49530, 9541, 49530 04240099
49530 IF (RVCOMP - .474) 29530,19530,49531 04250099
49531 IF (RVCOMP - .484) 19530,19530,29530 04260099
19530 IVPASS = IVPASS + 1 04270099
WRITE (I02,80001) IVTNUM 04280099
GO TO 9541 04290099
29530 IVFAIL = IVFAIL + 1 04300099
RVCORR = .479 04310099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04320099
9541 CONTINUE 04330099
IVTNUM = 954 04340099
C 04350099
C **** TEST 954 **** 04360099
C 04370099
IF (ICZERO) 39540, 9540, 39540 04380099
9540 CONTINUE 04390099
RVON01 = 4E0 04400099
RVCOMP = SIN (RVON01) 04410099
GO TO 49540 04420099
39540 IVDELE = IVDELE + 1 04430099
WRITE (I02,80003) IVTNUM 04440099
IF (ICZERO) 49540, 9551, 49540 04450099
49540 IF (RVCOMP + .762) 29540,19540,49541 04460099
49541 IF (RVCOMP + .752) 19540,19540,29540 04470099
19540 IVPASS = IVPASS + 1 04480099
WRITE (I02,80001) IVTNUM 04490099
GO TO 9551 04500099
29540 IVFAIL = IVFAIL + 1 04510099
RVCORR = -.757 04520099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04530099
9551 CONTINUE 04540099
C 04550099
C TEST 955 THROUGH TEST 957 CONTAIN FUNCTION TESTS FOR TRIGONOMETRIC04560099
C COSINE FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 04570099
C 04580099
IVTNUM = 955 04590099
C 04600099
C **** TEST 955 **** 04610099
C 04620099
IF (ICZERO) 39550, 9550, 39550 04630099
9550 CONTINUE 04640099
RVON01 = 0.00000 04650099
RVCOMP = COS (RVON01) 04660099
GO TO 49550 04670099
39550 IVDELE = IVDELE + 1 04680099
WRITE (I02,80003) IVTNUM 04690099
IF (ICZERO) 49550, 9561, 49550 04700099
49550 IF (RVCOMP - .995) 29550,19550,49551 04710099
49551 IF (RVCOMP - 1.005) 19550,19550,29550 04720099
19550 IVPASS = IVPASS + 1 04730099
WRITE (I02,80001) IVTNUM 04740099
GO TO 9561 04750099
29550 IVFAIL = IVFAIL + 1 04760099
RVCORR = 1.000 04770099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04780099
9561 CONTINUE 04790099
IVTNUM = 956 04800099
C 04810099
C **** TEST 956 **** 04820099
C 04830099
IF (ICZERO) 39560, 9560, 39560 04840099
9560 CONTINUE 04850099
RVON01 = 1.0E0 04860099
RVCOMP = COS (RVON01) 04870099
GO TO 49560 04880099
39560 IVDELE = IVDELE + 1 04890099
WRITE (I02,80003) IVTNUM 04900099
IF (ICZERO) 49560, 9571, 49560 04910099
49560 IF (RVCOMP - .535) 29560,19560,49561 04920099
49561 IF (RVCOMP - .545) 19560,19560,29560 04930099
19560 IVPASS = IVPASS + 1 04940099
WRITE (I02,80001) IVTNUM 04950099
GO TO 9571 04960099
29560 IVFAIL = IVFAIL + 1 04970099
RVCORR = 0.540 04980099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04990099
9571 CONTINUE 05000099
IVTNUM = 957 05010099
C 05020099
C **** TEST 957 **** 05030099
C 05040099
IF (ICZERO) 39570, 9570, 39570 05050099
9570 CONTINUE 05060099
RVCOMP = COS (4.0) 05070099
GO TO 49570 05080099
39570 IVDELE = IVDELE + 1 05090099
WRITE (I02,80003) IVTNUM 05100099
IF (ICZERO) 49570, 9581, 49570 05110099
49570 IF (RVCOMP + .659) 29570,19570,49571 05120099
49571 IF (RVCOMP + .649) 19570,19570,29570 05130099
19570 IVPASS = IVPASS + 1 05140099
WRITE (I02,80001) IVTNUM 05150099
GO TO 9581 05160099
29570 IVFAIL = IVFAIL + 1 05170099
RVCORR = -0.654 05180099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05190099
9581 CONTINUE 05200099
C 05210099
C TEST 958 THROUGH TEST 960 CONTAIN FUNCTION TESTS FOR HYPERBOLIC 05220099
C TANGENT FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL 05230099
C 05240099
IVTNUM = 958 05250099
C 05260099
C **** TEST 958 **** 05270099
C 05280099
IF (ICZERO) 39580, 9580, 39580 05290099
9580 CONTINUE 05300099
RVCOMP = TANH (0.0) 05310099
GO TO 49580 05320099
39580 IVDELE = IVDELE + 1 05330099
WRITE (I02,80003) IVTNUM 05340099
IF (ICZERO) 49580, 9591, 49580 05350099
49580 IF (RVCOMP + .00005) 29580,19580,49581 05360099
49581 IF (RVCOMP - .00005) 19580,19580,29580 05370099
19580 IVPASS = IVPASS + 1 05380099
WRITE (I02,80001) IVTNUM 05390099
GO TO 9591 05400099
29580 IVFAIL = IVFAIL + 1 05410099
RVCORR = 0.00000 05420099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05430099
9591 CONTINUE 05440099
IVTNUM = 959 05450099
C 05460099
C **** TEST 959 **** 05470099
C 05480099
IF (ICZERO) 39590, 9590, 39590 05490099
9590 CONTINUE 05500099
RVON01 = .5E0 05510099
RVCOMP = TANH (RVON01) 05520099
GO TO 49590 05530099
39590 IVDELE = IVDELE + 1 05540099
WRITE (I02,80003) IVTNUM 05550099
IF (ICZERO) 49590, 9601, 49590 05560099
49590 IF (RVCOMP - .457) 29590,19590,49591 05570099
49591 IF (RVCOMP - .467) 19590,19590,29590 05580099
19590 IVPASS = IVPASS + 1 05590099
WRITE (I02,80001) IVTNUM 05600099
GO TO 9601 05610099
29590 IVFAIL = IVFAIL + 1 05620099
RVCORR = 0.462 05630099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05640099
9601 CONTINUE 05650099
IVTNUM = 960 05660099
C 05670099
C **** TEST 960 **** 05680099
C 05690099
IF (ICZERO) 39600, 9600, 39600 05700099
9600 CONTINUE 05710099
RVON01 = .25 05720099
RVCOMP = TANH (RVON01) 05730099
GO TO 49600 05740099
39600 IVDELE = IVDELE + 1 05750099
WRITE (I02,80003) IVTNUM 05760099
IF (ICZERO) 49600, 9611, 49600 05770099
49600 IF (RVCOMP - .240) 29600,19600,49601 05780099
49601 IF (RVCOMP - .250) 19600,19600,29600 05790099
19600 IVPASS = IVPASS + 1 05800099
WRITE (I02,80001) IVTNUM 05810099
GO TO 9611 05820099
29600 IVFAIL = IVFAIL + 1 05830099
RVCORR = 0.245 05840099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05850099
9611 CONTINUE 05860099
C 05870099
C TESTS 961 AND 962 CONTAIN TESTS FOR ARCTANGENT OF THE FORM 05880099
C ATAN (A) WHERE THE ARGUMENT AND FUNCTION ARE REAL 05890099
C 05900099
IVTNUM = 961 05910099
C 05920099
C **** TEST 961 **** 05930099
C 05940099
IF (ICZERO) 39610, 9610, 39610 05950099
9610 CONTINUE 05960099
RVCOMP = ATAN (0.0) 05970099
GO TO 49610 05980099
39610 IVDELE = IVDELE + 1 05990099
WRITE (I02,80003) IVTNUM 06000099
IF (ICZERO) 49610, 9621, 49610 06010099
49610 IF (RVCOMP + .00005) 29610,19610,49611 06020099
49611 IF (RVCOMP - .00005) 19610,19610,29610 06030099
19610 IVPASS = IVPASS + 1 06040099
WRITE (I02,80001) IVTNUM 06050099
GO TO 9621 06060099
29610 IVFAIL = IVFAIL + 1 06070099
RVCORR = 0.00000 06080099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06090099
9621 CONTINUE 06100099
IVTNUM = 962 06110099
C 06120099
C **** TEST 962 **** 06130099
C 06140099
IF (ICZERO) 39620, 9620, 39620 06150099
9620 CONTINUE 06160099
RVON01 = 5E-1 06170099
RVCOMP = ATAN (RVON01) 06180099
GO TO 49620 06190099
39620 IVDELE = IVDELE + 1 06200099
WRITE (I02,80003) IVTNUM 06210099
IF (ICZERO) 49620, 9631, 49620 06220099
49620 IF (RVCOMP - .459) 29620,19620,49621 06230099
49621 IF (RVCOMP - .469) 19620,19620,29620 06240099
19620 IVPASS = IVPASS + 1 06250099
WRITE (I02,80001) IVTNUM 06260099
GO TO 9631 06270099
29620 IVFAIL = IVFAIL + 1 06280099
RVCORR = 0.464 06290099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06300099
9631 CONTINUE 06310099
C 06320099
C TESTS 963 AND 964 CONTAIN TESTS FOR ARCTANGENT OF THE FORM 06330099
C ATAN2 (A1,A2) WHERE THE ARGUMENTS AND FUNCTION ARE REAL 06340099
C 06350099
IVTNUM = 963 06360099
C 06370099
C **** TEST 963 **** 06380099
C 06390099
IF (ICZERO) 39630, 9630, 39630 06400099
9630 CONTINUE 06410099
RVON01 = 0.0 06420099
RVON02 = 1E0 06430099
RVCOMP = ATAN2 (RVON01,RVON02) 06440099
GO TO 49630 06450099
39630 IVDELE = IVDELE + 1 06460099
WRITE (I02,80003) IVTNUM 06470099
IF (ICZERO) 49630, 9641, 49630 06480099
49630 IF (RVCOMP + .00005) 29630,19630,49631 06490099
49631 IF (RVCOMP - .00005) 19630,19630,29630 06500099
19630 IVPASS = IVPASS + 1 06510099
WRITE (I02,80001) IVTNUM 06520099
GO TO 9641 06530099
29630 IVFAIL = IVFAIL + 1 06540099
RVCORR = 0.00000 06550099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06560099
9641 CONTINUE 06570099
IVTNUM = 964 06580099
C 06590099
C **** TEST 964 **** 06600099
C 06610099
IF (ICZERO) 39640, 9640, 39640 06620099
9640 CONTINUE 06630099
RVON01 = 2E1 06640099
RVCOMP = ATAN2 (-1.0,RVON01) 06650099
GO TO 49640 06660099
39640 IVDELE = IVDELE + 1 06670099
WRITE (I02,80003) IVTNUM 06680099
IF (ICZERO) 49640, 9651, 49640 06690099
49640 IF (RVCOMP + .05001) 29640,19640,49641 06700099
49641 IF (RVCOMP + .04991) 19640,19640,29640 06710099
19640 IVPASS = IVPASS + 1 06720099
WRITE (I02,80001) IVTNUM 06730099
GO TO 9651 06740099
29640 IVFAIL = IVFAIL + 1 06750099
RVCORR = -.04996 06760099
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06770099
9651 CONTINUE 06780099
C 06790099
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 06800099
99999 CONTINUE 06810099
WRITE (I02,90002) 06820099
WRITE (I02,90006) 06830099
WRITE (I02,90002) 06840099
WRITE (I02,90002) 06850099
WRITE (I02,90007) 06860099
WRITE (I02,90002) 06870099
WRITE (I02,90008) IVFAIL 06880099
WRITE (I02,90009) IVPASS 06890099
WRITE (I02,90010) IVDELE 06900099
C 06910099
C 06920099
C TERMINATE ROUTINE EXECUTION 06930099
STOP 06940099
C 06950099
C FORMAT STATEMENTS FOR PAGE HEADERS 06960099
90000 FORMAT ("1") 06970099
90002 FORMAT (" ") 06980099
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 06990099
90003 FORMAT (" ",21X,"VERSION 2.1" ) 07000099
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07010099
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07020099
90006 FORMAT (" ",5X,"----------------------------------------------" ) 07030099
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07040099
C 07050099
C FORMAT STATEMENTS FOR RUN SUMMARIES 07060099
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07070099
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07080099
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07090099
C 07100099
C FORMAT STATEMENTS FOR TEST RESULTS 07110099
80001 FORMAT (" ",4X,I5,7X,"PASS") 07120099
80002 FORMAT (" ",4X,I5,7X,"FAIL") 07130099
80003 FORMAT (" ",4X,I5,7X,"DELETED") 07140099
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07150099
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07160099
C 07170099
90007 FORMAT (" ",20X,"END OF PROGRAM FM099" ) 07180099
END 07190099