| 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 |