| PROGRAM FM308 00010308 |
| C 00020308 |
| C 00030308 |
| C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE ACTUAL 00040308 |
| C ARGUMENTS CONSIST OF INTRINSIC FUNCTION REFERENCES, EXTERNAL 00050308 |
| C FUNCTION REFERENCES, STATEMENT FUNCTION REFERENCES, AND 00060308 |
| C EXPRESSIONS INVOLVING OPERATORS. THE ARGUMENT AND FUNCTION 00070308 |
| C TYPES OF ALL INTRINSIC FUNCTIONS TESTED ARE EITHER INTEGER OR 00080308 |
| C REAL. THE INTRINSIC AND EXTERNAL SPECIFICATION STATEMENTS ARE 00090308 |
| C SPECIFIED IN ORDER TO ALLOW INTRINSIC AND EXTERNAL FUNCTIONS TO 00100308 |
| C BE USED AS ACTUAL ARGUMENTS. THE IMPLICIT STATEMENT AND THE 00110308 |
| C TYPE-STATEMENT ARE TESTED TO ENSURE THAT THEY DO NOT CHANGE THE 00120308 |
| C TYPE OF AN INTRINSIC FUNCTION. THE COMMON STATEMENT IS USED TO 00130308 |
| C PASS DATA ENTITIES TO AN EXTERNAL FUNCTION. THE DATA STATEMENT 00140308 |
| C IS USED TO ENSURE THAT INITIALLY DEFINED ENTITIES CAN BE USED AS 00150308 |
| C ACTUAL ARGUMENTS. THE EQUIVALENCE STATEMENT IS USED TO EQUATE A 00160308 |
| C VARIABLE USED AS AN ACTUAL ARGUMENT. THE INTRINSIC FUNCTIONS 00170308 |
| C TESTED IN THIS ROUTINE INCLUDE. 00180308 |
| C 00190308 |
| C SPECIFIC TYPE OF 00200308 |
| C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION00210308 |
| C ------------------ -------- -------- --------00220308 |
| C TYPE CONVERSION INT REAL INTEGER 00230308 |
| C TYPE CONVERSION IFIX REAL INTEGER 00240308 |
| C TYPE CONVERSION FLOAT INTEGER REAL 00250308 |
| C TYPE CONVERSION REAL INTEGER REAL 00260308 |
| C TRUNCATION AINT REAL REAL 00270308 |
| C NEAREST WHOLE NUMBER ANINT REAL REAL 00280308 |
| C NEAREST INTEGER NINT REAL INTEGER 00290308 |
| C ABSOLUTE VALUE IABS INTEGER INTEGER 00300308 |
| C ABSOLUTE VALUE ABS REAL REAL 00310308 |
| C REMAINDERING MOD INTEGER INTEGER 00320308 |
| C REMAINDERING AMOD REAL REAL 00330308 |
| C TRANSFER OF SIGN ISIGN INTEGER INTEGER 00340308 |
| C TRANSFER OF SIGN SIGN REAL REAL 00350308 |
| C POSITIVE DIFFERENCE IDIM INTEGER INTEGER 00360308 |
| C POSITIVE DIFFERENCE DIM REAL REAL 00370308 |
| C CHOOSING LARGEST VALUE MAX0 INTEGER INTEGER 00380308 |
| C CHOOSING LARGEST VALUE AMAX0 INTEGER REAL 00390308 |
| C CHOOSING LARGEST VALUE MAX1 REAL INTEGER 00400308 |
| C CHOOSING SMALLEST VALUE AMIN1 REAL REAL 00410308 |
| C CHOOSING SMALLEST VALUE MIN1 REAL INTEGER 00420308 |
| C SQUARE ROOT SQRT REAL REAL 00430308 |
| C EXPONENTIAL EXP REAL REAL 00440308 |
| C NATURAL LOGARITHM ALOG REAL REAL 00450308 |
| C SINE SIN REAL REAL 00460308 |
| C COSINE COS REAL REAL 00470308 |
| C TANGENT TAN REAL REAL 00480308 |
| C ARCSINE ASIN REAL REAL 00490308 |
| C ARCCOSINE ACOS REAL REAL 00500308 |
| C ARCTANGENT ATAN REAL REAL 00510308 |
| C HYPERBOLIC SINE SINH REAL REAL 00520308 |
| C HYPERBOLIC COSINE COSH REAL REAL 00530308 |
| C HYPERBOLIC TANGENT TANH REAL REAL 00540308 |
| C 00550308 |
| C SUBSET LEVEL ROUTINES FM097, FM098, FM099 AND FM307 TEST THE 00560308 |
| C USE OF INTEGER AND REAL INTRINSIC FUNCTIONS USING INTEGER AND REAL00570308 |
| C CONSTANTS, VARIABLES AND ARRAY ELEMENT ENTITIES AS ACTUAL 00580308 |
| C ARGUMENTS. 00590308 |
| C 00600308 |
| C REFERENCES. 00610308 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00620308 |
| C X3.9-1978 00630308 |
| C 00640308 |
| C SECTION 8.2, EQUIVALENCE STATEMENT 00650308 |
| C SECTION 8.3, COMMON STATEMENT 00660308 |
| C SECTION 8.4, TYPE-STATEMENTS 00670308 |
| C SECTION 8.5, IMPLICIT STATEMENT 00680308 |
| C SECTION 8.7, EXTERNAL STATEMENT 00690308 |
| C SECTION 8.8, INTRINSIC STATEMENT 00700308 |
| C SECTION 9, DATA STATEMENT 00710308 |
| C SECTION 15.3, INTRINSIC FUNCTION 00720308 |
| C SECTION 15.4, STATEMENT FUNCTION 00730308 |
| C SECTION 15.5, EXTERNAL FUNCTION 00740308 |
| C SECTION 15.5.2, .REFERENCING AN EXTERNAL FUNCTION 00750308 |
| C SECTION 15.9.2, ACTUAL ARGUMENTS 00760308 |
| C SECTION 15.9.3, ASSOCIATION OF DUMMY AND ACTUAL ARGUMENTS 00770308 |
| C TABLE 5, INTRINSIC FUNCTIONS (INCLUDING NOTES) 00780308 |
| C SECTION 15.10.1, RESTRICTIONS ON RANGE OF ARGUMENTS AND RESULTS00790308 |
| C 00800308 |
| C 00810308 |
| C ******************************************************************00820308 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00830308 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00840308 |
| C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00850308 |
| C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00860308 |
| C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00870308 |
| C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00880308 |
| C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00890308 |
| C THE RESULT OF EXECUTING THESE TESTS. 00900308 |
| C 00910308 |
| C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00920308 |
| C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00930308 |
| C 00940308 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00950308 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00960308 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00970308 |
| C BUILDING 225 RM A266 00980308 |
| C GAITHERSBURG, MD 20899 00990308 |
| C ******************************************************************01000308 |
| C 01010308 |
| C 01020308 |
| IMPLICIT LOGICAL (L) 01030308 |
| IMPLICIT CHARACTER*14 (C) 01040308 |
| C 01050308 |
| IMPLICIT INTEGER (E) 01060308 |
| IMPLICIT REAL (N) 01070308 |
| INTEGER MAX1 01080308 |
| REAL SINH 01090308 |
| DIMENSION RADN11(5) 01100308 |
| DIMENSION IADN11(5) 01110308 |
| COMMON RVCN01 01120308 |
| EQUIVALENCE (IVOE01,IVOE02) 01130308 |
| EXTERNAL FF309,FF310 01140308 |
| INTRINSIC ABS, AINT, IABS, ISIGN, SQRT 01150308 |
| DATA RVON04/2.23/ 01160308 |
| RFOS01(RDON01) = RDON01 + 1.0 01170308 |
| C 01180308 |
| C 01190308 |
| C 01200308 |
| C INITIALIZATION SECTION. 01210308 |
| C 01220308 |
| C INITIALIZE CONSTANTS 01230308 |
| C ******************** 01240308 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01250308 |
| I01 = 5 01260308 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01270308 |
| I02 = 6 01280308 |
| C SYSTEM ENVIRONMENT SECTION 01290308 |
| C 01300308 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01310308 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01320308 |
| C (UNIT NUMBER FOR CARD READER). 01330308 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01340308 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01350308 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01360308 |
| C 01370308 |
| CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01380308 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01390308 |
| C (UNIT NUMBER FOR PRINTER). 01400308 |
| CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01410308 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01420308 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01430308 |
| C 01440308 |
| IVPASS = 0 01450308 |
| IVFAIL = 0 01460308 |
| IVDELE = 0 01470308 |
| ICZERO = 0 01480308 |
| C 01490308 |
| C WRITE OUT PAGE HEADERS 01500308 |
| C 01510308 |
| WRITE (I02,90002) 01520308 |
| WRITE (I02,90006) 01530308 |
| WRITE (I02,90008) 01540308 |
| WRITE (I02,90004) 01550308 |
| WRITE (I02,90010) 01560308 |
| WRITE (I02,90004) 01570308 |
| WRITE (I02,90016) 01580308 |
| WRITE (I02,90001) 01590308 |
| WRITE (I02,90004) 01600308 |
| WRITE (I02,90012) 01610308 |
| WRITE (I02,90014) 01620308 |
| WRITE (I02,90004) 01630308 |
| C 01640308 |
| C 01650308 |
| C TEST 032 THROUGH TEST 040 TEST INTRINSIC FUNCTIONS USING 01660308 |
| C INTRINSIC FUNCTION REFERENCES AS ACTUAL ARGUMENTS. 01670308 |
| C 01680308 |
| C 01690308 |
| C **** FCVS PROGRAM 308 - TEST 032 **** 01700308 |
| C 01710308 |
| C 01720308 |
| IVTNUM = 32 01730308 |
| IF (ICZERO) 30320, 0320, 30320 01740308 |
| 0320 CONTINUE 01750308 |
| RVCOMP = 10.0 01760308 |
| RVCOMP = ANINT (ABS (-2.78) ) 01770308 |
| RVCORR = 3.0 01780308 |
| 40320 IF (RVCOMP - 2.9995) 20320, 10320, 40321 01790308 |
| 40321 IF (RVCOMP - 3.0005) 10320, 10320, 20320 01800308 |
| 30320 IVDELE = IVDELE + 1 01810308 |
| WRITE (I02,80000) IVTNUM 01820308 |
| IF (ICZERO) 10320, 0331, 20320 01830308 |
| 10320 IVPASS = IVPASS + 1 01840308 |
| WRITE (I02,80002) IVTNUM 01850308 |
| GO TO 0331 01860308 |
| 20320 IVFAIL = IVFAIL + 1 01870308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 01880308 |
| 0331 CONTINUE 01890308 |
| C 01900308 |
| C **** FCVS PROGRAM 308 - TEST 033 **** 01910308 |
| C 01920308 |
| C 01930308 |
| IVTNUM = 33 01940308 |
| IF (ICZERO) 30330, 0330, 30330 01950308 |
| 0330 CONTINUE 01960308 |
| RVCOMP = 10.0 01970308 |
| RVCOMP = ATAN (AINT (1.2) ) 01980308 |
| RVCORR = .78540 01990308 |
| 40330 IF (RVCOMP - .78535) 20330, 10330, 40331 02000308 |
| 40331 IF (RVCOMP - .78545) 10330, 10330, 20330 02010308 |
| 30330 IVDELE = IVDELE + 1 02020308 |
| WRITE (I02,80000) IVTNUM 02030308 |
| IF (ICZERO) 10330, 0341, 20330 02040308 |
| 10330 IVPASS = IVPASS + 1 02050308 |
| WRITE (I02,80002) IVTNUM 02060308 |
| GO TO 0341 02070308 |
| 20330 IVFAIL = IVFAIL + 1 02080308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02090308 |
| 0341 CONTINUE 02100308 |
| C 02110308 |
| C **** FCVS PROGRAM 308 - TEST 034 **** 02120308 |
| C 02130308 |
| C 02140308 |
| IVTNUM = 34 02150308 |
| IF (ICZERO) 30340, 0340, 30340 02160308 |
| 0340 CONTINUE 02170308 |
| RVCOMP = 10.0 02180308 |
| RVCOMP = COS (ABS (-.78540) ) 02190308 |
| RVCORR = .70711 02200308 |
| 40340 IF (RVCOMP - .70706) 20340, 10340, 40341 02210308 |
| 40341 IF (RVCOMP - .70716) 10340, 10340, 20340 02220308 |
| 30340 IVDELE = IVDELE + 1 02230308 |
| WRITE (I02,80000) IVTNUM 02240308 |
| IF (ICZERO) 10340, 0351, 20340 02250308 |
| 10340 IVPASS = IVPASS + 1 02260308 |
| WRITE (I02,80002) IVTNUM 02270308 |
| GO TO 0351 02280308 |
| 20340 IVFAIL = IVFAIL + 1 02290308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02300308 |
| 0351 CONTINUE 02310308 |
| C 02320308 |
| C **** FCVS PROGRAM 308 - TEST 035 **** 02330308 |
| C 02340308 |
| C 02350308 |
| IVTNUM = 35 02360308 |
| IF (ICZERO) 30350, 0350, 30350 02370308 |
| 0350 CONTINUE 02380308 |
| RVCOMP = 10.0 02390308 |
| IVON01 = 6 02400308 |
| RVCOMP = AMAX0 (1, IVON01, IABS(-7) ) 02410308 |
| RVCORR = 7.0 02420308 |
| 40350 IF (RVCOMP - 6.9995) 20350, 10350, 40351 02430308 |
| 40351 IF (RVCOMP - 7.0005) 10350, 10350, 20350 02440308 |
| 30350 IVDELE = IVDELE + 1 02450308 |
| WRITE (I02,80000) IVTNUM 02460308 |
| IF (ICZERO) 10350, 0361, 20350 02470308 |
| 10350 IVPASS = IVPASS + 1 02480308 |
| WRITE (I02,80002) IVTNUM 02490308 |
| GO TO 0361 02500308 |
| 20350 IVFAIL = IVFAIL + 1 02510308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02520308 |
| 0361 CONTINUE 02530308 |
| C 02540308 |
| C **** FCVS PROGRAM 308 - TEST 036 **** 02550308 |
| C 02560308 |
| C 02570308 |
| IVTNUM = 36 02580308 |
| IF (ICZERO) 30360, 0360, 30360 02590308 |
| 0360 CONTINUE 02600308 |
| IVCOMP = 10 02610308 |
| IVCOMP = IABS (ISIGN (7, -2)) 02620308 |
| IVCORR = 7 02630308 |
| 40360 IF (IVCOMP - 7) 20360, 10360, 20360 02640308 |
| 30360 IVDELE = IVDELE + 1 02650308 |
| WRITE (I02,80000) IVTNUM 02660308 |
| IF (ICZERO) 10360, 0371, 20360 02670308 |
| 10360 IVPASS = IVPASS + 1 02680308 |
| WRITE (I02,80002) IVTNUM 02690308 |
| GO TO 0371 02700308 |
| 20360 IVFAIL = IVFAIL + 1 02710308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02720308 |
| 0371 CONTINUE 02730308 |
| C 02740308 |
| C **** FCVS PROGRAM 308 - TEST 037 **** 02750308 |
| C 02760308 |
| C 02770308 |
| IVTNUM = 37 02780308 |
| IF (ICZERO) 30370, 0370, 30370 02790308 |
| 0370 CONTINUE 02800308 |
| IVCOMP = 10 02810308 |
| IVCOMP = MOD (5, IABS (-3) ) 02820308 |
| IVCORR = 2 02830308 |
| 40370 IF (IVCOMP - 2) 20370, 10370, 20370 02840308 |
| 30370 IVDELE = IVDELE + 1 02850308 |
| WRITE (I02,80000) IVTNUM 02860308 |
| IF (ICZERO) 10370, 0381, 20370 02870308 |
| 10370 IVPASS = IVPASS + 1 02880308 |
| WRITE (I02,80002) IVTNUM 02890308 |
| GO TO 0381 02900308 |
| 20370 IVFAIL = IVFAIL + 1 02910308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02920308 |
| 0381 CONTINUE 02930308 |
| C 02940308 |
| C **** FCVS PROGRAM 308 - TEST 038 **** 02950308 |
| C 02960308 |
| C 02970308 |
| IVTNUM = 38 02980308 |
| IF (ICZERO) 30380, 0380, 30380 02990308 |
| 0380 CONTINUE 03000308 |
| IVCOMP = 10 03010308 |
| IVCOMP = ISIGN (-3, IABS (-5) ) 03020308 |
| IVCORR = 3 03030308 |
| 40380 IF (IVCOMP - 3) 20380, 10380, 20380 03040308 |
| 30380 IVDELE = IVDELE + 1 03050308 |
| WRITE (I02,80000) IVTNUM 03060308 |
| IF (ICZERO) 10380, 0391, 20380 03070308 |
| 10380 IVPASS = IVPASS + 1 03080308 |
| WRITE (I02,80002) IVTNUM 03090308 |
| GO TO 0391 03100308 |
| 20380 IVFAIL = IVFAIL + 1 03110308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03120308 |
| 0391 CONTINUE 03130308 |
| C 03140308 |
| C **** FCVS PROGRAM 308 - TEST 039 **** 03150308 |
| C 03160308 |
| C REPEAT FUNCTION REFERENCE TWICE IN ONE INTRINSIC FUNCTION 03170308 |
| C REFERENCE. 03180308 |
| C 03190308 |
| IVTNUM = 39 03200308 |
| IF (ICZERO) 30390, 0390, 30390 03210308 |
| 0390 CONTINUE 03220308 |
| IVCOMP = 10 03230308 |
| IVCOMP = MAX0 (IABS (-5), IABS (-6) ) 03240308 |
| IVCORR = 6 03250308 |
| 40390 IF (IVCOMP -6) 20390, 10390, 20390 03260308 |
| 30390 IVDELE = IVDELE + 1 03270308 |
| WRITE (I02,80000) IVTNUM 03280308 |
| IF (ICZERO) 10390, 0401, 20390 03290308 |
| 10390 IVPASS = IVPASS + 1 03300308 |
| WRITE (I02,80002) IVTNUM 03310308 |
| GO TO 0401 03320308 |
| 20390 IVFAIL = IVFAIL + 1 03330308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03340308 |
| 0401 CONTINUE 03350308 |
| C 03360308 |
| C **** FCVS PROGRAM 308 - TEST 040 **** 03370308 |
| C 03380308 |
| C USE INTRINSIC FUNCTION REFERENCE AS ACTUAL ARGUMENT TO ITSELF. 03390308 |
| C 03400308 |
| IVTNUM = 40 03410308 |
| IF (ICZERO) 30400, 0400, 30400 03420308 |
| 0400 CONTINUE 03430308 |
| RVCOMP = 10.0 03440308 |
| RVCOMP = SQRT (SQRT (25.) ) 03450308 |
| RVCORR = 2.2361 03460308 |
| 40400 IF (RVCOMP - 2.2356) 20400, 10400, 40401 03470308 |
| 40401 IF (RVCOMP - 2.2366) 10400, 10400, 20400 03480308 |
| 30400 IVDELE = IVDELE + 1 03490308 |
| WRITE (I02,80000) IVTNUM 03500308 |
| IF (ICZERO) 10400, 0411, 20400 03510308 |
| 10400 IVPASS = IVPASS + 1 03520308 |
| WRITE (I02,80002) IVTNUM 03530308 |
| GO TO 0411 03540308 |
| 20400 IVFAIL = IVFAIL + 1 03550308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03560308 |
| 0411 CONTINUE 03570308 |
| C 03580308 |
| C TEST 041 THROUGH TEST 045 TEST INTRINSIC FUNCTIONS USING EXTERNAL 03590308 |
| C FUNCTION REFERENCES AS ACTUAL ARGUMENTS. 03600308 |
| C 03610308 |
| C 03620308 |
| C **** FCVS PROGRAM 308 - TEST 041 **** 03630308 |
| C 03640308 |
| C 03650308 |
| IVTNUM = 41 03660308 |
| IF (ICZERO) 30410, 0410, 30410 03670308 |
| 0410 CONTINUE 03680308 |
| RVCOMP = 10.0 03690308 |
| RVCOMP = ALOG (FF309 (29.0) ) 03700308 |
| RVCORR = 3.4012 03710308 |
| 40410 IF (RVCOMP - 3.4007) 20410, 10410, 40411 03720308 |
| 40411 IF (RVCOMP - 3.4017) 10410, 10410, 20410 03730308 |
| 30410 IVDELE = IVDELE + 1 03740308 |
| WRITE (I02,80000) IVTNUM 03750308 |
| IF (ICZERO) 10410, 0421, 20410 03760308 |
| 10410 IVPASS = IVPASS + 1 03770308 |
| WRITE (I02,80002) IVTNUM 03780308 |
| GO TO 0421 03790308 |
| 20410 IVFAIL = IVFAIL + 1 03800308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03810308 |
| 0421 CONTINUE 03820308 |
| C 03830308 |
| C **** FCVS PROGRAM 308 - TEST 042 **** 03840308 |
| C 03850308 |
| C 03860308 |
| IVTNUM = 42 03870308 |
| IF (ICZERO) 30420, 0420, 30420 03880308 |
| 0420 CONTINUE 03890308 |
| RVCOMP = 10.0 03900308 |
| RVCOMP = ASIN (FF309 (0.) ) 03910308 |
| RVCORR = 1.5708 03920308 |
| 40420 IF (RVCOMP - 1.5703) 20420, 10420, 40421 03930308 |
| 40421 IF (RVCOMP - 1.5713) 10420, 10420, 20420 03940308 |
| 30420 IVDELE = IVDELE + 1 03950308 |
| WRITE (I02,80000) IVTNUM 03960308 |
| IF (ICZERO) 10420, 0431, 20420 03970308 |
| 10420 IVPASS = IVPASS + 1 03980308 |
| WRITE (I02,80002) IVTNUM 03990308 |
| GO TO 0431 04000308 |
| 20420 IVFAIL = IVFAIL + 1 04010308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04020308 |
| 0431 CONTINUE 04030308 |
| C 04040308 |
| C **** FCVS PROGRAM 308 - TEST 043 **** 04050308 |
| C 04060308 |
| C 04070308 |
| IVTNUM = 43 04080308 |
| IF (ICZERO) 30430, 0430, 30430 04090308 |
| 0430 CONTINUE 04100308 |
| RVCOMP = 10.0 04110308 |
| RVON01 = 1.5 04120308 |
| RVCOMP = COSH (FF309 (RVON01) ) 04130308 |
| RVCORR = 6.1323 04140308 |
| 40430 IF (RVCOMP - 6.1318) 20430, 10430, 40431 04150308 |
| 40431 IF (RVCOMP - 6.1328) 10430, 10430, 20430 04160308 |
| 30430 IVDELE = IVDELE + 1 04170308 |
| WRITE (I02,80000) IVTNUM 04180308 |
| IF (ICZERO) 10430, 0441, 20430 04190308 |
| 10430 IVPASS = IVPASS + 1 04200308 |
| WRITE (I02,80002) IVTNUM 04210308 |
| GO TO 0441 04220308 |
| 20430 IVFAIL = IVFAIL + 1 04230308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04240308 |
| 0441 CONTINUE 04250308 |
| C 04260308 |
| C **** FCVS PROGRAM 308 - TEST 044 **** 04270308 |
| C 04280308 |
| C 04290308 |
| IVTNUM = 44 04300308 |
| IF (ICZERO) 30440, 0440, 30440 04310308 |
| 0440 CONTINUE 04320308 |
| IVCOMP = 10 04330308 |
| IVCOMP = IFIX (FF309 (33.3) ) 04340308 |
| IVCORR = 34 04350308 |
| 40440 IF (IVCOMP - 34) 20440, 10440, 20440 04360308 |
| 30440 IVDELE = IVDELE + 1 04370308 |
| WRITE (I02,80000) IVTNUM 04380308 |
| IF (ICZERO) 10440, 0451, 20440 04390308 |
| 10440 IVPASS = IVPASS + 1 04400308 |
| WRITE (I02,80002) IVTNUM 04410308 |
| GO TO 0451 04420308 |
| 20440 IVFAIL = IVFAIL + 1 04430308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04440308 |
| 0451 CONTINUE 04450308 |
| C 04460308 |
| C **** FCVS PROGRAM 308 - TEST 045 **** 04470308 |
| C 04480308 |
| C 04490308 |
| IVTNUM = 45 04500308 |
| IF (ICZERO) 30450, 0450, 30450 04510308 |
| 0450 CONTINUE 04520308 |
| RVCOMP = 10.0 04530308 |
| RADN11(2) = 2.1416 04540308 |
| RVCOMP = TAN (FF309 (RADN11(2))) 04550308 |
| RVCORR = 0.0 04560308 |
| 40450 IF (RVCOMP + .00005) 20450, 10450, 40451 04570308 |
| 40451 IF (RVCOMP - .00005) 10450, 10450, 20450 04580308 |
| 30450 IVDELE = IVDELE + 1 04590308 |
| WRITE (I02,80000) IVTNUM 04600308 |
| IF (ICZERO) 10450, 0461, 20450 04610308 |
| 10450 IVPASS = IVPASS + 1 04620308 |
| WRITE (I02,80002) IVTNUM 04630308 |
| GO TO 0461 04640308 |
| 20450 IVFAIL = IVFAIL + 1 04650308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04660308 |
| 0461 CONTINUE 04670308 |
| C 04680308 |
| C TEST 046 THROUGH TEST 052 TEST INTRINSIC FUNCTIONS USING 04690308 |
| C EXPRESSIONS INVOLVING OPERATORS AS ACTUAL ARGUMENTS. 04700308 |
| C 04710308 |
| C 04720308 |
| C **** FCVS PROGRAM 308 - TEST 046 **** 04730308 |
| C 04740308 |
| C 04750308 |
| IVTNUM = 46 04760308 |
| IF (ICZERO) 30460, 0460, 30460 04770308 |
| 0460 CONTINUE 04780308 |
| RVCOMP = 10.0 04790308 |
| RVCOMP = ABS (3.4 - 8.2) 04800308 |
| RVCORR = 4.8 04810308 |
| 40460 IF (RVCOMP - 4.7995) 20460, 10460, 40461 04820308 |
| 40461 IF (RVCOMP - 4.8005) 10460, 10460, 20460 04830308 |
| 30460 IVDELE = IVDELE + 1 04840308 |
| WRITE (I02,80000) IVTNUM 04850308 |
| IF (ICZERO) 10460, 0471, 20460 04860308 |
| 10460 IVPASS = IVPASS + 1 04870308 |
| WRITE (I02,80002) IVTNUM 04880308 |
| GO TO 0471 04890308 |
| 20460 IVFAIL = IVFAIL + 1 04900308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04910308 |
| 0471 CONTINUE 04920308 |
| C 04930308 |
| C **** FCVS PROGRAM 308 - TEST 047 **** 04940308 |
| C 04950308 |
| C 04960308 |
| IVTNUM = 47 04970308 |
| IF (ICZERO) 30470, 0470, 30470 04980308 |
| 0470 CONTINUE 04990308 |
| RVCOMP = 10.0 05000308 |
| IVON01 = 2 05010308 |
| RVON01 = 3.0 05020308 |
| RVCOMP = ACOS (IVON01 - RVON01 * .5) 05030308 |
| RVCORR = 1.0472 05040308 |
| 40470 IF (RVCOMP - 1.0467) 20470, 10470, 40471 05050308 |
| 40471 IF (RVCOMP - 1.0477) 10470, 10470, 20470 05060308 |
| 30470 IVDELE = IVDELE + 1 05070308 |
| WRITE (I02,80000) IVTNUM 05080308 |
| IF (ICZERO) 10470, 0481, 20470 05090308 |
| 10470 IVPASS = IVPASS + 1 05100308 |
| WRITE (I02,80002) IVTNUM 05110308 |
| GO TO 0481 05120308 |
| 20470 IVFAIL = IVFAIL + 1 05130308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05140308 |
| 0481 CONTINUE 05150308 |
| C 05160308 |
| C **** FCVS PROGRAM 308 - TEST 048 **** 05170308 |
| C 05180308 |
| C 05190308 |
| IVTNUM = 48 05200308 |
| IF (ICZERO) 30480, 0480, 30480 05210308 |
| 0480 CONTINUE 05220308 |
| RVCOMP = 10.0 05230308 |
| IVON01 = 2 05240308 |
| RVON01 = -4.8 05250308 |
| RVON02 = 4.5 05260308 |
| RVCOMP = AMIN1 (RVON01, (IVON01 - 3.2) * RVON02) 05270308 |
| RVCORR = -5.4 05280308 |
| 40480 IF (RVCOMP + 5.4005 ) 20480, 10480, 40481 05290308 |
| 40481 IF (RVCOMP + 5.3995 ) 10480, 10480, 20480 05300308 |
| 30480 IVDELE = IVDELE + 1 05310308 |
| WRITE (I02,80000) IVTNUM 05320308 |
| IF (ICZERO) 10480, 0491, 20480 05330308 |
| 10480 IVPASS = IVPASS + 1 05340308 |
| WRITE (I02,80002) IVTNUM 05350308 |
| GO TO 0491 05360308 |
| 20480 IVFAIL = IVFAIL + 1 05370308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05380308 |
| 0491 CONTINUE 05390308 |
| C 05400308 |
| C **** FCVS PROGRAM 308 - TEST 049 **** 05410308 |
| C 05420308 |
| C 05430308 |
| IVTNUM = 49 05440308 |
| IF (ICZERO) 30490, 0490, 30490 05450308 |
| 0490 CONTINUE 05460308 |
| RVCOMP = 10.0 05470308 |
| RVON01 = 12.0 05480308 |
| IADN11(1) = 3 05490308 |
| RADN11(2) = 2.5 05500308 |
| RVCOMP = AMOD (RVON01 / IADN11(1), 12 / RADN11(2)) 05510308 |
| RVCORR = 4.0 05520308 |
| 40490 IF (RVCOMP - 3.9995) 20490, 10490, 40491 05530308 |
| 40491 IF (RVCOMP - 4.0005) 10490, 10490, 20490 05540308 |
| 30490 IVDELE = IVDELE + 1 05550308 |
| WRITE (I02,80000) IVTNUM 05560308 |
| IF (ICZERO) 10490, 0501, 20490 05570308 |
| 10490 IVPASS = IVPASS + 1 05580308 |
| WRITE (I02,80002) IVTNUM 05590308 |
| GO TO 0501 05600308 |
| 20490 IVFAIL = IVFAIL + 1 05610308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05620308 |
| 0501 CONTINUE 05630308 |
| C 05640308 |
| C **** FCVS PROGRAM 308 - TEST 050 **** 05650308 |
| C 05660308 |
| C 05670308 |
| IVTNUM = 50 05680308 |
| IF (ICZERO) 30500, 0500, 30500 05690308 |
| 0500 CONTINUE 05700308 |
| IVCOMP = 10 05710308 |
| IVON01 = 2 05720308 |
| IVON02 = 9 05730308 |
| IVCOMP = IDIM (IVON01 ** 3, IVON02) 05740308 |
| IVCORR = 0 05750308 |
| 40500 IF (IVCOMP) 20500, 10500, 20500 05760308 |
| 30500 IVDELE = IVDELE + 1 05770308 |
| WRITE (I02,80000) IVTNUM 05780308 |
| IF (ICZERO) 10500, 0511, 20500 05790308 |
| 10500 IVPASS = IVPASS + 1 05800308 |
| WRITE (I02,80002) IVTNUM 05810308 |
| GO TO 0511 05820308 |
| 20500 IVFAIL = IVFAIL + 1 05830308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05840308 |
| 0511 CONTINUE 05850308 |
| C 05860308 |
| C **** FCVS PROGRAM 308 - TEST 051 **** 05870308 |
| C 05880308 |
| C 05890308 |
| IVTNUM = 51 05900308 |
| IF (ICZERO) 30510, 0510, 30510 05910308 |
| 0510 CONTINUE 05920308 |
| RVCOMP = 10.0 05930308 |
| IVON01 = 6 05940308 |
| RVCOMP = REAL (IABS (-3) + IVON01) 05950308 |
| RVCORR = 9.0 05960308 |
| 40510 IF (RVCOMP - 8.9995) 20510, 10510, 40511 05970308 |
| 40511 IF (RVCOMP - 9.0005) 10510, 10510, 20510 05980308 |
| 30510 IVDELE = IVDELE + 1 05990308 |
| WRITE (I02,80000) IVTNUM 06000308 |
| IF (ICZERO) 10510, 0521, 20510 06010308 |
| 10510 IVPASS = IVPASS + 1 06020308 |
| WRITE (I02,80002) IVTNUM 06030308 |
| GO TO 0521 06040308 |
| 20510 IVFAIL = IVFAIL + 1 06050308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06060308 |
| 0521 CONTINUE 06070308 |
| C 06080308 |
| C **** FCVS PROGRAM 308 - TEST 052 **** 06090308 |
| C 06100308 |
| C 06110308 |
| IVTNUM = 52 06120308 |
| IF (ICZERO) 30520, 0520, 30520 06130308 |
| 0520 CONTINUE 06140308 |
| RVCOMP = 10.0 06150308 |
| RVON01 = 2.3 06160308 |
| IVON01 = 150 06170308 |
| IADN11(1) = 3 06180308 |
| RVCOMP = SIGN(13+RVON01*IABS(-4)-IVON01/FF309(1.)**IADN11(1),-1.) 06190308 |
| RVCORR = -3.45 06200308 |
| 40520 IF (RVCOMP + 3.4505) 20520, 10520, 40521 06210308 |
| 40521 IF (RVCOMP + 3.4495) 10520, 10520, 20520 06220308 |
| 30520 IVDELE = IVDELE + 1 06230308 |
| WRITE (I02,80000) IVTNUM 06240308 |
| IF (ICZERO) 10520, 0531, 20520 06250308 |
| 10520 IVPASS = IVPASS + 1 06260308 |
| WRITE (I02,80002) IVTNUM 06270308 |
| GO TO 0531 06280308 |
| 20520 IVFAIL = IVFAIL + 1 06290308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06300308 |
| 0531 CONTINUE 06310308 |
| C 06320308 |
| C TEST 053 THROUGH TEST 056 TEST INTRINSIC FUNCTIONS USING 06330308 |
| C STATEMENT FUNCTION REFERENCES AS ACTUAL ARGUMENTS. 06340308 |
| C 06350308 |
| C 06360308 |
| C **** FCVS PROGRAM 308 - TEST 053 **** 06370308 |
| C 06380308 |
| C 06390308 |
| IVTNUM = 53 06400308 |
| IF (ICZERO) 30530, 0530, 30530 06410308 |
| 0530 CONTINUE 06420308 |
| RVCOMP = 10.0 06430308 |
| RVCOMP = DIM (RFOS01(5.4), 6.0) 06440308 |
| RVCORR = .4 06450308 |
| 40530 IF (RVCOMP - .39995) 20530, 10530, 40531 06460308 |
| 40531 IF (RVCOMP - .40005) 10530, 10530, 20530 06470308 |
| 30530 IVDELE = IVDELE + 1 06480308 |
| WRITE (I02,80000) IVTNUM 06490308 |
| IF (ICZERO) 10530, 0541, 20530 06500308 |
| 10530 IVPASS = IVPASS + 1 06510308 |
| WRITE (I02,80002) IVTNUM 06520308 |
| GO TO 0541 06530308 |
| 20530 IVFAIL = IVFAIL + 1 06540308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06550308 |
| 0541 CONTINUE 06560308 |
| C 06570308 |
| C **** FCVS PROGRAM 308 - TEST 054 **** 06580308 |
| C 06590308 |
| C 06600308 |
| IVTNUM = 54 06610308 |
| IF (ICZERO) 30540, 0540, 30540 06620308 |
| 0540 CONTINUE 06630308 |
| IVCOMP = 10 06640308 |
| IVCOMP = INT(RFOS01(2.01)) 06650308 |
| IVCORR = 3 06660308 |
| 40540 IF (IVCOMP - 3) 20540, 10540, 20540 06670308 |
| 30540 IVDELE = IVDELE + 1 06680308 |
| WRITE (I02,80000) IVTNUM 06690308 |
| IF (ICZERO) 10540, 0551, 20540 06700308 |
| 10540 IVPASS = IVPASS + 1 06710308 |
| WRITE (I02,80002) IVTNUM 06720308 |
| GO TO 0551 06730308 |
| 20540 IVFAIL = IVFAIL + 1 06740308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06750308 |
| 0551 CONTINUE 06760308 |
| C 06770308 |
| C **** FCVS PROGRAM 308 - TEST 055 **** 06780308 |
| C 06790308 |
| C 06800308 |
| IVTNUM = 55 06810308 |
| IF (ICZERO) 30550, 0550, 30550 06820308 |
| 0550 CONTINUE 06830308 |
| RVCOMP = 10.0 06840308 |
| RVON01 = 0.5708 06850308 |
| RVCOMP = SIN (RFOS01 (RVON01) / 2) 06860308 |
| RVCORR = .70711 06870308 |
| 40550 IF (RVCOMP - .70706) 20550, 10550, 40551 06880308 |
| 40551 IF (RVCOMP - .70716) 10550, 10550, 20550 06890308 |
| 30550 IVDELE = IVDELE + 1 06900308 |
| WRITE (I02,80000) IVTNUM 06910308 |
| IF (ICZERO) 10550, 0561, 20550 06920308 |
| 10550 IVPASS = IVPASS + 1 06930308 |
| WRITE (I02,80002) IVTNUM 06940308 |
| GO TO 0561 06950308 |
| 20550 IVFAIL = IVFAIL + 1 06960308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06970308 |
| 0561 CONTINUE 06980308 |
| C 06990308 |
| C **** FCVS PROGRAM 308 - TEST 056 **** 07000308 |
| C 07010308 |
| C 07020308 |
| IVTNUM = 56 07030308 |
| IF (ICZERO) 30560, 0560, 30560 07040308 |
| 0560 CONTINUE 07050308 |
| RVCOMP = 10.0 07060308 |
| RADN11(2) = 1.5 07070308 |
| RVCOMP = TANH(RFOS01(RADN11(2))) 07080308 |
| RVCORR = .98661 07090308 |
| 40560 IF (RVCOMP - .98656) 20560, 10560, 40561 07100308 |
| 40561 IF (RVCOMP - .98666) 10560, 10560, 20560 07110308 |
| 30560 IVDELE = IVDELE + 1 07120308 |
| WRITE (I02,80000) IVTNUM 07130308 |
| IF (ICZERO) 10560, 0571, 20560 07140308 |
| 10560 IVPASS = IVPASS + 1 07150308 |
| WRITE (I02,80002) IVTNUM 07160308 |
| GO TO 0571 07170308 |
| 20560 IVFAIL = IVFAIL + 1 07180308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07190308 |
| 0571 CONTINUE 07200308 |
| C 07210308 |
| C **** FCVS PROGRAM 308 - TEST 057 **** 07220308 |
| C 07230308 |
| C TEST 057 TESTS THE INTRINSIC FUNCTION AINT USING AN EXTERNAL 07240308 |
| C FUNCTION REFERENCE AS AN ACTUAL ARGUMENT AND THE COMMON 07250308 |
| C STATEMENT AS A MEANS OF PASSING DATA TO THE EXTERNAL FUNCTION. 07260308 |
| C 07270308 |
| IVTNUM = 57 07280308 |
| IF (ICZERO) 30570, 0570, 30570 07290308 |
| 0570 CONTINUE 07300308 |
| RVCOMP = 10.0 07310308 |
| RVCN01 = 25.3 07320308 |
| RVCOMP = AINT(FF310( )) 07330308 |
| RVCORR = 26.0 07340308 |
| 40570 IF (RVCOMP - 25.995) 20570, 10570, 40571 07350308 |
| 40571 IF (RVCOMP - 26.005) 10570, 10570, 20570 07360308 |
| 30570 IVDELE = IVDELE + 1 07370308 |
| WRITE (I02,80000) IVTNUM 07380308 |
| IF (ICZERO) 10570, 0581, 20570 07390308 |
| 10570 IVPASS = IVPASS + 1 07400308 |
| WRITE (I02,80002) IVTNUM 07410308 |
| GO TO 0581 07420308 |
| 20570 IVFAIL = IVFAIL + 1 07430308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07440308 |
| 0581 CONTINUE 07450308 |
| C 07460308 |
| C **** FCVS PROGRAM 308 - TEST 058 **** 07470308 |
| C 07480308 |
| C TEST 058 TESTS THE INTRINSIC FUNCTION FLOAT BY USING A VARIABLE 07490308 |
| C EQUATED BY EQUIVALENCE ASSOCIATION AS AN ACTUAL ARGUMENT. 07500308 |
| C 07510308 |
| IVTNUM = 58 07520308 |
| IF (ICZERO) 30580, 0580, 30580 07530308 |
| 0580 CONTINUE 07540308 |
| RVCOMP = 10.0 07550308 |
| IVOE01 = 5 07560308 |
| RVCOMP = FLOAT(IVOE01) 07570308 |
| RVCORR = 5.0 07580308 |
| 40580 IF (RVCOMP - 4.9995) 20580, 10580, 40581 07590308 |
| 40581 IF (RVCOMP - 5.0005) 10580, 10580, 20580 07600308 |
| 30580 IVDELE = IVDELE + 1 07610308 |
| WRITE (I02,80000) IVTNUM 07620308 |
| IF (ICZERO) 10580, 0591, 20580 07630308 |
| 10580 IVPASS = IVPASS + 1 07640308 |
| WRITE (I02,80002) IVTNUM 07650308 |
| GO TO 0591 07660308 |
| 20580 IVFAIL = IVFAIL + 1 07670308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07680308 |
| 0591 CONTINUE 07690308 |
| C 07700308 |
| C **** FCVS PROGRAM 308 - TEST 059 **** 07710308 |
| C 07720308 |
| C TEST 059 TESTS THE INTRINSIC FUNCTION MIN1 BY USING A VARIABLE 07730308 |
| C INITIALIZED BY THE DATA STATEMENT AS AN ACTUAL ARGUMENT. 07740308 |
| C 07750308 |
| IVTNUM = 59 07760308 |
| IF (ICZERO) 30590, 0590, 30590 07770308 |
| 0590 CONTINUE 07780308 |
| IVCOMP = 10 07790308 |
| IVCOMP = MIN1(6., RVON04, 7.3) 07800308 |
| IVCORR = 2 07810308 |
| 40590 IF (IVCOMP - 2) 20590, 10590, 20590 07820308 |
| 30590 IVDELE = IVDELE + 1 07830308 |
| WRITE (I02,80000) IVTNUM 07840308 |
| IF (ICZERO) 10590, 0601, 20590 07850308 |
| 10590 IVPASS = IVPASS + 1 07860308 |
| WRITE (I02,80002) IVTNUM 07870308 |
| GO TO 0601 07880308 |
| 20590 IVFAIL = IVFAIL + 1 07890308 |
| WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07900308 |
| 0601 CONTINUE 07910308 |
| C 07920308 |
| C **** FCVS PROGRAM 308 - TEST 060 **** 07930308 |
| C 07940308 |
| C TEST 060 ATTEMPTS TO OVERRIDE THE TYPING OF REAL FOR THE 07950308 |
| C INTRINSIC FUNCTION EXP WITH IMPLICIT INTEGER TYPING. 07960308 |
| C 07970308 |
| IVTNUM = 60 07980308 |
| IF (ICZERO) 30600, 0600, 30600 07990308 |
| 0600 CONTINUE 08000308 |
| RVCOMP = 10.0 08010308 |
| RVON01 = 2.05 08020308 |
| RVCOMP = EXP(RVON01) 08030308 |
| RVCORR = 7.7679 08040308 |
| 40600 IF (RVCOMP - 7.7674) 20600, 10600, 40601 08050308 |
| 40601 IF (RVCOMP - 7.7684) 10600, 10600, 20600 08060308 |
| 30600 IVDELE = IVDELE + 1 08070308 |
| WRITE (I02,80000) IVTNUM 08080308 |
| IF (ICZERO) 10600, 0611, 20600 08090308 |
| 10600 IVPASS = IVPASS + 1 08100308 |
| WRITE (I02,80002) IVTNUM 08110308 |
| GO TO 0611 08120308 |
| 20600 IVFAIL = IVFAIL + 1 08130308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08140308 |
| 0611 CONTINUE 08150308 |
| C 08160308 |
| C **** FCVS PROGRAM 308 - TEST 061 **** 08170308 |
| C 08180308 |
| C TEST 061 ATTEMPTS TO OVERRIDE THE TYPING OF INTEGER FOR THE 08190308 |
| C INTRINSIC FUNCTION NINT WITH IMPLICIT REAL TYPING. 08200308 |
| C 08210308 |
| IVTNUM = 61 08220308 |
| IF (ICZERO) 30610, 0610, 30610 08230308 |
| 0610 CONTINUE 08240308 |
| RVCOMP = 10.0 08250308 |
| RVON01 = 3.78 08260308 |
| RVCOMP = NINT(RVON01) / 5 08270308 |
| RVCORR = 0.0 08280308 |
| 40610 IF (RVCOMP + .00005) 20610, 10610, 40611 08290308 |
| 40611 IF (RVCOMP - .00005) 10610, 10610, 20610 08300308 |
| 30610 IVDELE = IVDELE + 1 08310308 |
| WRITE (I02,80000) IVTNUM 08320308 |
| IF (ICZERO) 10610, 0621, 20610 08330308 |
| 10610 IVPASS = IVPASS + 1 08340308 |
| WRITE (I02,80002) IVTNUM 08350308 |
| GO TO 0621 08360308 |
| 20610 IVFAIL = IVFAIL + 1 08370308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08380308 |
| 0621 CONTINUE 08390308 |
| C 08400308 |
| C **** FCVS PROGRAM 308 - TEST 062 **** 08410308 |
| C 08420308 |
| C TEST 062 ATTEMPTS TO OVERRIDE THE TYPING OF REAL FOR THE 08430308 |
| C INTRINSIC FUNCTION SINH WITH TYPE-STATEMENT TYPING OF INTEGER. 08440308 |
| C 08450308 |
| IVTNUM = 62 08460308 |
| IF (ICZERO) 30620, 0620, 30620 08470308 |
| 0620 CONTINUE 08480308 |
| RVCOMP = 10.0 08490308 |
| RVCOMP = SINH(2.0) 08500308 |
| RVCORR = 3.6269 08510308 |
| 40620 IF (RVCOMP - 3.6264) 20620, 10620, 40621 08520308 |
| 40621 IF (RVCOMP - 3.6274) 10620, 10620, 20620 08530308 |
| 30620 IVDELE = IVDELE + 1 08540308 |
| WRITE (I02,80000) IVTNUM 08550308 |
| IF (ICZERO) 10620, 0631, 20620 08560308 |
| 10620 IVPASS = IVPASS + 1 08570308 |
| WRITE (I02,80002) IVTNUM 08580308 |
| GO TO 0631 08590308 |
| 20620 IVFAIL = IVFAIL + 1 08600308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08610308 |
| 0631 CONTINUE 08620308 |
| C 08630308 |
| C **** FCVS PROGRAM 308 - TEST 063 **** 08640308 |
| C 08650308 |
| C TEST 063 ATTEMPTS TO OVERRIDE THE TYPING OF INTEGER FOR THE 08660308 |
| C INTRINSIC FUNCTION MAX1 WITH TYPE-STATEMENT TYPING OF REAL. 08670308 |
| C 08680308 |
| IVTNUM = 63 08690308 |
| IF (ICZERO) 30630, 0630, 30630 08700308 |
| 0630 CONTINUE 08710308 |
| RVCOMP = 10.0 08720308 |
| RVCOMP = MAX1(2.3, 3.1, 4.4) / 5 08730308 |
| RVCORR = 0.0 08740308 |
| 40630 IF (RVCOMP + .00005) 20630, 10630, 40631 08750308 |
| 40631 IF (RVCOMP - .00005) 10630, 10630, 20630 08760308 |
| 30630 IVDELE = IVDELE + 1 08770308 |
| WRITE (I02,80000) IVTNUM 08780308 |
| IF (ICZERO) 10630, 0641, 20630 08790308 |
| 10630 IVPASS = IVPASS + 1 08800308 |
| WRITE (I02,80002) IVTNUM 08810308 |
| GO TO 0641 08820308 |
| 20630 IVFAIL = IVFAIL + 1 08830308 |
| WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08840308 |
| 0641 CONTINUE 08850308 |
| C 08860308 |
| C 08870308 |
| C WRITE OUT TEST SUMMARY 08880308 |
| C 08890308 |
| WRITE (I02,90004) 08900308 |
| WRITE (I02,90014) 08910308 |
| WRITE (I02,90004) 08920308 |
| WRITE (I02,90000) 08930308 |
| WRITE (I02,90004) 08940308 |
| WRITE (I02,90020) IVFAIL 08950308 |
| WRITE (I02,90022) IVPASS 08960308 |
| WRITE (I02,90024) IVDELE 08970308 |
| STOP 08980308 |
| 90001 FORMAT (" ",24X,"FM308") 08990308 |
| 90000 FORMAT (" ",20X,"END OF PROGRAM FM308" ) 09000308 |
| C 09010308 |
| C FORMATS FOR TEST DETAIL LINES 09020308 |
| C 09030308 |
| 80000 FORMAT (" ",4X,I5,6X,"DELETED") 09040308 |
| 80002 FORMAT (" ",4X,I5,7X,"PASS") 09050308 |
| 80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 09060308 |
| 80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 09070308 |
| 80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 09080308 |
| C 09090308 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 09100308 |
| C 09110308 |
| 90002 FORMAT ("1") 09120308 |
| 90004 FORMAT (" ") 09130308 |
| 90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 09140308 |
| 90008 FORMAT (" ",21X,"VERSION 2.1" ) 09150308 |
| 90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 09160308 |
| 90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 09170308 |
| 90014 FORMAT (" ",5X,"----------------------------------------------" ) 09180308 |
| 90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 09190308 |
| C 09200308 |
| C FORMAT STATEMENTS FOR RUN SUMMARY 09210308 |
| C 09220308 |
| 90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 09230308 |
| 90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 09240308 |
| 90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 09250308 |
| END 09260308 |
| |
| REAL FUNCTION FF309(RDON01) 00010309 |
| C THIS FUNCTION IS USED TO INCREMENT THE ARGUMENT VALUE BY 00020309 |
| C ONE AND RETURN THE RESULT AS THE FUNCTION VALUE. 00030309 |
| FF309 = RDON01 + 1.0 00040309 |
| RETURN 00050309 |
| END 00060309 |
| |
| REAL FUNCTION FF310 ( ) 00010310 |
| C THIS FUNCTION IS USED TO INCREMENT BY ONE A VALUE PASSED 00020310 |
| C TO THE FUNCTION THROUGH COMMON. 00030310 |
| COMMON RVCN01 00040310 |
| FF310 = RVCN01 + 1.0 00050310 |
| RETURN 00060310 |
| END 00070310 |