blob: 75a6f36e8266dde30784c57852e64110bf69060d [file] [log] [blame]
PROGRAM FM307 00010307
C 00020307
C 00030307
C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION 00040307
C TYPE IS REAL AND THE ARGUMENTS ARE EITHER INTEGER OR REAL. THE 00050307
C FUNCTION NINT IS AN EXCEPTION AND HAS AN INTEGER FUNCTION TYPE. 00060307
C THE REAL OR INTEGER ARGUMENTS CONSIST OF POSITIVE, NEGATIVE AND 00070307
C UNSIGNED CONSTANTS, VARIABLES AND ARRAY ELEMENT VALUES. EACH 00080307
C INTRINSIC FUNCTION IS TESTED WITH THREE OR FOUR DIFFERENT 00090307
C COMBINATIONS OF ACTUAL ARGUMENTS DESIGNED TO TEST NOT ONLY THE 00100307
C VARIOUS COMBINATIONS OF DATA USAGES BUT ALSO TO TEST THE RANGE OF 00110307
C ARGUMENT AND FUNCTION VALUES, WHERE THAT IS APPROPRIATE. THE 00120307
C INTRINSIC FUNCTIONS TESTED IN THIS ROUTINE INCLUDE. 00130307
C 00140307
C SPECIFIC TYPE OF 00150307
C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION00160307
C ------------------ ------ -------- --------00170307
C CONVERSION TO REAL REAL INTEGER REAL 00180307
C NEAREST WHOLE NUMBER ANINT REAL REAL 00190307
C NEAREST INTEGER NINT REAL INTEGER 00200307
C TANGENT TAN REAL REAL 00210307
C ARCSINE ASIN REAL REAL 00220307
C ARCCOSINE ACOS REAL REAL 00230307
C HYPERBOLIC SINE SINH REAL REAL 00240307
C HYPERBOLIC COSINE COSH REAL REAL 00250307
C 00260307
C SUBSET LEVEL ROUTINES FM097 THROUGH FM099 AND FM308 ALSO 00270307
C TEST THE USE OF INTEGER AND REAL INTRINSIC FUNCTIONS. 00280307
C 00290307
C REFERENCES. 00300307
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00310307
C X3.9-1978 00320307
C 00330307
C SECTION 15.3, INTRINSIC FUNCTIONS 00340307
C SECTION 15.9.2, ACTUAL ARGUMENTS 00350307
C SECTION 15.9.3, ASSOCIATION OF DUMMY AND ACTUAL ARGUMENTS 00360307
C TABLE 5, INTRINSIC FUNCTIONS (INCLUDING NOTES) 00370307
C SECTION 15.10.1, RESTRICTION ON RANGE OF ARGUMENTS AND RESULTS00380307
C 00390307
C 00400307
C ******************************************************************00410307
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00420307
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00430307
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00440307
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00450307
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00460307
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00470307
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00480307
C THE RESULT OF EXECUTING THESE TESTS. 00490307
C 00500307
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00510307
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00520307
C 00530307
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00540307
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00550307
C SOFTWARE STANDARDS VALIDATION GROUP 00560307
C BUILDING 225 RM A266 00570307
C GAITHERSBURG, MD 20899 00580307
C ******************************************************************00590307
C 00600307
C 00610307
IMPLICIT LOGICAL (L) 00620307
IMPLICIT CHARACTER*14 (C) 00630307
C 00640307
DIMENSION IAON11(4) 00650307
DIMENSION RAON11(4) 00660307
DATA PI/3.141592654/ 00670307
C 00680307
C 00690307
C 00700307
C INITIALIZATION SECTION. 00710307
C 00720307
C INITIALIZE CONSTANTS 00730307
C ******************** 00740307
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00750307
I01 = 5 00760307
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00770307
I02 = 6 00780307
C SYSTEM ENVIRONMENT SECTION 00790307
C 00800307
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00810307
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00820307
C (UNIT NUMBER FOR CARD READER). 00830307
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00840307
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00850307
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00860307
C 00870307
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00880307
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00890307
C (UNIT NUMBER FOR PRINTER). 00900307
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00910307
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00920307
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00930307
C 00940307
IVPASS = 0 00950307
IVFAIL = 0 00960307
IVDELE = 0 00970307
ICZERO = 0 00980307
C 00990307
C WRITE OUT PAGE HEADERS 01000307
C 01010307
WRITE (I02,90002) 01020307
WRITE (I02,90006) 01030307
WRITE (I02,90008) 01040307
WRITE (I02,90004) 01050307
WRITE (I02,90010) 01060307
WRITE (I02,90004) 01070307
WRITE (I02,90016) 01080307
WRITE (I02,90001) 01090307
WRITE (I02,90004) 01100307
WRITE (I02,90012) 01110307
WRITE (I02,90014) 01120307
WRITE (I02,90004) 01130307
C 01140307
C 01150307
C TEST 001 THROUGH TEST 004 CONTAIN INTRINSIC FUNCTION TESTS FOR 01160307
C TYPE CONVERSION TO REAL (REAL) WHERE THE FUNCTION IS REAL AND THE 01170307
C ARGUMENT IS INTEGER. 01180307
C 01190307
C 01200307
C **** FCVS PROGRAM 307 - TEST 001 **** 01210307
C 01220307
C CONSTANT ARGUMENT 01230307
C 01240307
IVTNUM = 1 01250307
IF (ICZERO) 30010, 0010, 30010 01260307
0010 CONTINUE 01270307
RVCOMP = 10.0 01280307
RVCOMP = REAL (6) 01290307
RVCORR = 6.0 01300307
40010 IF (RVCOMP - 5.9995) 20010,10010,40011 01310307
40011 IF (RVCOMP - 6.0005) 10010,10010,20010 01320307
30010 IVDELE = IVDELE + 1 01330307
WRITE (I02,80000) IVTNUM 01340307
IF (ICZERO) 10010, 0021, 20010 01350307
10010 IVPASS = IVPASS + 1 01360307
WRITE (I02,80002) IVTNUM 01370307
GO TO 0021 01380307
20010 IVFAIL = IVFAIL + 1 01390307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 01400307
0021 CONTINUE 01410307
C 01420307
C **** FCVS PROGRAM 307 - TEST 002 **** 01430307
C 01440307
C VARIABLE ARGUMENT 01450307
C 01460307
IVTNUM = 2 01470307
IF (ICZERO) 30020, 0020, 30020 01480307
0020 CONTINUE 01490307
RVCOMP = 10.0 01500307
IVON01 = 6 01510307
RVCOMP = REAL (IVON01) 01520307
RVCORR = 6.0 01530307
40020 IF (RVCOMP - 5.9995) 20020,10020,40021 01540307
40021 IF (RVCOMP - 6.0005) 10020, 10020, 20020 01550307
30020 IVDELE = IVDELE + 1 01560307
WRITE (I02,80000) IVTNUM 01570307
IF (ICZERO) 10020, 0031, 20020 01580307
10020 IVPASS = IVPASS + 1 01590307
WRITE (I02,80002) IVTNUM 01600307
GO TO 0031 01610307
20020 IVFAIL = IVFAIL + 1 01620307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 01630307
0031 CONTINUE 01640307
C 01650307
C **** FCVS PROGRAM 307 - TEST 003 **** 01660307
C 01670307
C ARRAY ELEMENT NAME ARGUMENT 01680307
C 01690307
IVTNUM = 3 01700307
IF (ICZERO) 30030, 0030, 30030 01710307
0030 CONTINUE 01720307
RVCOMP = 10.0 01730307
IAON11(3) = 6 01740307
RVCOMP = REAL (IAON11(3)) 01750307
RVCORR = 6.0 01760307
40030 IF (RVCOMP - 5.9995) 20030, 10030, 40031 01770307
40031 IF (RVCOMP - 6.0005) 10030, 10030, 20030 01780307
30030 IVDELE = IVDELE + 1 01790307
WRITE (I02,80000) IVTNUM 01800307
IF (ICZERO) 10030, 0041, 20030 01810307
10030 IVPASS = IVPASS + 1 01820307
WRITE (I02,80002) IVTNUM 01830307
GO TO 0041 01840307
20030 IVFAIL = IVFAIL + 1 01850307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 01860307
0041 CONTINUE 01870307
C 01880307
C **** FCVS PROGRAM 307 - TEST 004 **** 01890307
C 01900307
C EXPRESSION AS ARGUMENT 01910307
C 01920307
IVTNUM = 4 01930307
IF (ICZERO) 30040, 0040, 30040 01940307
0040 CONTINUE 01950307
RVCOMP = 10.0 01960307
IVON01 = 6 01970307
RVCOMP = REAL (IVON01 - 6) 01980307
RVCORR = 0.0 01990307
40040 IF(RVCOMP + .00005) 20040, 10040, 40041 02000307
40041 IF(RVCOMP - .00005) 10040, 10040, 20040 02010307
30040 IVDELE = IVDELE + 1 02020307
WRITE (I02,80000) IVTNUM 02030307
IF (ICZERO) 10040, 0051, 20040 02040307
10040 IVPASS = IVPASS + 1 02050307
WRITE (I02,80002) IVTNUM 02060307
GO TO 0051 02070307
20040 IVFAIL = IVFAIL + 1 02080307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02090307
0051 CONTINUE 02100307
C 02110307
C TEST 005 THROUGH TEST 008 CONTAIN INTRINSIC FUNCTION TESTS FOR 02120307
C FINDING THE NEAREST WHOLE NUMBER (ANINT) WHERE THE FUNCTION AND 02130307
C ARGUMENT TYPES ARE BOTH REAL. 02140307
C 02150307
C 02160307
C **** FCVS PROGRAM 307 - TEST 005 **** 02170307
C 02180307
C CONSTANT ARGUMENT 02190307
C 02200307
IVTNUM = 5 02210307
IF (ICZERO) 30050, 0050, 30050 02220307
0050 CONTINUE 02230307
RVCOMP = 10.0 02240307
RVCOMP = ANINT (3.4994) 02250307
RVCORR = 3.0 02260307
40050 IF (RVCOMP - 2.9995) 20050, 10050, 40051 02270307
40051 IF (RVCOMP - 3.0005) 10050, 10050, 20050 02280307
30050 IVDELE = IVDELE + 1 02290307
WRITE (I02,80000) IVTNUM 02300307
IF (ICZERO) 10050, 0061, 20050 02310307
10050 IVPASS = IVPASS + 1 02320307
WRITE (I02,80002) IVTNUM 02330307
GO TO 0061 02340307
20050 IVFAIL = IVFAIL + 1 02350307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02360307
0061 CONTINUE 02370307
C 02380307
C **** FCVS PROGRAM 307 - TEST 006 **** 02390307
C 02400307
C VARIABLE ARGUMENT 02410307
C 02420307
IVTNUM = 6 02430307
IF (ICZERO) 30060, 0060, 30060 02440307
0060 CONTINUE 02450307
RVCOMP = 10.0 02460307
RVON01 = -3.4994 02470307
RVCOMP = ANINT (RVON01) 02480307
RVCORR = -3.0 02490307
40060 IF (RVCOMP + 3.0005) 20060, 10060, 40061 02500307
40061 IF (RVCOMP + 2.9995) 10060, 10060, 20060 02510307
30060 IVDELE = IVDELE + 1 02520307
WRITE (I02,80000) IVTNUM 02530307
IF (ICZERO) 10060, 0071, 20060 02540307
10060 IVPASS = IVPASS + 1 02550307
WRITE (I02,80002) IVTNUM 02560307
GO TO 0071 02570307
20060 IVFAIL = IVFAIL + 1 02580307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02590307
0071 CONTINUE 02600307
C 02610307
C **** FCVS PROGRAM 307 - TEST 007 **** 02620307
C 02630307
C ARRAY ELEMENT NAME ARGUMENT 02640307
C 02650307
IVTNUM = 7 02660307
IF (ICZERO) 30070, 0070, 30070 02670307
0070 CONTINUE 02680307
RVCOMP = 10.0 02690307
RAON11(3) = 3.0000 02700307
RVCOMP = ANINT (RAON11(3)) 02710307
RVCORR = 3.0 02720307
40070 IF (RVCOMP - 2.9995) 20070, 10070, 40071 02730307
40071 IF (RVCOMP - 3.0005) 10070, 10070, 20070 02740307
30070 IVDELE = IVDELE + 1 02750307
WRITE (I02,80000) IVTNUM 02760307
IF (ICZERO) 10070, 0081, 20070 02770307
10070 IVPASS = IVPASS + 1 02780307
WRITE (I02,80002) IVTNUM 02790307
GO TO 0081 02800307
20070 IVFAIL = IVFAIL + 1 02810307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02820307
0081 CONTINUE 02830307
C 02840307
C **** FCVS PROGRAM 307 - TEST 008 **** 02850307
C 02860307
C ZERO ARGUMENT 02870307
C 02880307
IVTNUM = 8 02890307
IF (ICZERO) 30080, 0080, 30080 02900307
0080 CONTINUE 02910307
RVCOMP = 10.0 02920307
RVCOMP = ANINT (0.0) 02930307
RVCORR = 0.0 02940307
40080 IF (RVCOMP) 20080, 10080, 20080 02950307
30080 IVDELE = IVDELE + 1 02960307
WRITE (I02,80000) IVTNUM 02970307
IF (ICZERO) 10080, 0091, 20080 02980307
10080 IVPASS = IVPASS + 1 02990307
WRITE (I02,80002) IVTNUM 03000307
GO TO 0091 03010307
20080 IVFAIL = IVFAIL + 1 03020307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03030307
0091 CONTINUE 03040307
C 03050307
C TEST 009 THROUGH TEST 012 CONTAIN INTRINSIC FUNCTION TESTS FOR 03060307
C FINDING THE NEAREST INTEGER (NINT) WHERE THE ARGUMENT IS REAL 03070307
C AND THE FUNCTION TYPE IS INTEGER. 03080307
C 03090307
C 03100307
C **** FCVS PROGRAM 307 - TEST 009 **** 03110307
C 03120307
C CONSTANT ARGUMENT 03130307
C 03140307
IVTNUM = 9 03150307
IF (ICZERO) 30090, 0090, 30090 03160307
0090 CONTINUE 03170307
IVCOMP = 10 03180307
IVCOMP = NINT (3.4994) 03190307
IVCORR = 3 03200307
40090 IF (IVCOMP - 3) 20090, 10090, 20090 03210307
30090 IVDELE = IVDELE + 1 03220307
WRITE (I02,80000) IVTNUM 03230307
IF (ICZERO) 10090, 0101, 20090 03240307
10090 IVPASS = IVPASS + 1 03250307
WRITE (I02,80002) IVTNUM 03260307
GO TO 0101 03270307
20090 IVFAIL = IVFAIL + 1 03280307
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03290307
0101 CONTINUE 03300307
C 03310307
C **** FCVS PROGRAM 307 - TEST 010 **** 03320307
C 03330307
C VARIABLE ARGUMENT 03340307
C 03350307
IVTNUM = 10 03360307
IF (ICZERO) 30100, 0100, 30100 03370307
0100 CONTINUE 03380307
IVCOMP = 10 03390307
RVON01 = -3.4994 03400307
IVCOMP = NINT (RVON01) 03410307
IVCORR = -3 03420307
40100 IF (IVCOMP +3) 20100, 10100, 20100 03430307
30100 IVDELE = IVDELE + 1 03440307
WRITE (I02,80000) IVTNUM 03450307
IF (ICZERO) 10100, 0111, 20100 03460307
10100 IVPASS = IVPASS + 1 03470307
WRITE (I02,80002) IVTNUM 03480307
GO TO 0111 03490307
20100 IVFAIL = IVFAIL + 1 03500307
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03510307
0111 CONTINUE 03520307
C 03530307
C **** FCVS PROGRAM 307 - TEST 011 **** 03540307
C 03550307
C ARRAY ELEMENT NAME ARGUMENT 03560307
C 03570307
IVTNUM = 11 03580307
IF (ICZERO) 30110, 0110, 30110 03590307
0110 CONTINUE 03600307
IVCOMP = 10 03610307
RAON11(1) = 3.0000 03620307
IVCOMP = NINT (RAON11(1)) 03630307
IVCORR = 3 03640307
40110 IF (IVCOMP -3) 20110, 10110, 20110 03650307
30110 IVDELE = IVDELE + 1 03660307
WRITE (I02,80000) IVTNUM 03670307
IF (ICZERO) 10110, 0121, 20110 03680307
10110 IVPASS = IVPASS + 1 03690307
WRITE (I02,80002) IVTNUM 03700307
GO TO 0121 03710307
20110 IVFAIL = IVFAIL + 1 03720307
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03730307
0121 CONTINUE 03740307
C 03750307
C **** FCVS PROGRAM 307 - TEST 012 **** 03760307
C 03770307
C ZERO ARGUMENT 03780307
C 03790307
IVTNUM = 12 03800307
IF (ICZERO) 30120, 0120, 30120 03810307
0120 CONTINUE 03820307
IVCOMP = 10 03830307
IVCOMP = NINT (0.0) 03840307
IVCORR = 0 03850307
40120 IF (IVCOMP) 20120, 10120, 20120 03860307
30120 IVDELE = IVDELE + 1 03870307
WRITE (I02,80000) IVTNUM 03880307
IF (ICZERO) 10120, 0131, 20120 03890307
10120 IVPASS = IVPASS + 1 03900307
WRITE (I02,80002) IVTNUM 03910307
GO TO 0131 03920307
20120 IVFAIL = IVFAIL + 1 03930307
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03940307
0131 CONTINUE 03950307
C 03960307
C TEST 013 THROUGH TEST 017 CONTAIN INTRINSIC FUNCTION TESTS FOR 03970307
C FINDING THE TRIGONOMETRIC TANGENT (TAN) WHERE THE FUNCTION AND 03980307
C ARGUMENT TYPES ARE BOTH REAL. ALL ARGUMENTS ARE GIVEN IN RADIANS 03990307
C WHERE ONE RADIAN EQUALS 57.296 DEGREES. 04000307
C 04010307
C 04020307
C **** FCVS PROGRAM 307 - TEST 013 **** 04030307
C 04040307
C FIND THE TANGENT OF 0 DEGREES (0.0 RADIANS) 04050307
C 04060307
IVTNUM = 13 04070307
IF (ICZERO) 30130, 0130, 30130 04080307
0130 CONTINUE 04090307
RVCOMP = 10.0 04100307
RVCOMP = TAN (0.0) 04110307
RVCORR = 0.0 04120307
40130 IF (RVCOMP) 20130, 10130, 20130 04130307
30130 IVDELE = IVDELE + 1 04140307
WRITE (I02,80000) IVTNUM 04150307
IF (ICZERO) 10130, 0141, 20130 04160307
10130 IVPASS = IVPASS + 1 04170307
WRITE (I02,80002) IVTNUM 04180307
GO TO 0141 04190307
20130 IVFAIL = IVFAIL + 1 04200307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04210307
0141 CONTINUE 04220307
C 04230307
C **** FCVS PROGRAM 307 - TEST 014 **** 04240307
C 04250307
C FIND THE TANGENT OF 135 DEGREES (2.3562 RADIANS) 04260307
C 04270307
IVTNUM = 14 04280307
IF (ICZERO) 30140, 0140, 30140 04290307
0140 CONTINUE 04300307
RVCOMP = 10.0 04310307
RVON01 = 3 * PI / 4 04320307
RVCOMP = TAN (RVON01) 04330307
RVCORR = -1.0 04340307
40140 IF (RVCOMP + 1.0005) 20140, 10140, 40141 04350307
40141 IF (RVCOMP + .9995) 10140, 10140, 20140 04360307
30140 IVDELE = IVDELE + 1 04370307
WRITE (I02,80000) IVTNUM 04380307
IF (ICZERO) 10140, 0151, 20140 04390307
10140 IVPASS = IVPASS + 1 04400307
WRITE (I02,80002) IVTNUM 04410307
GO TO 0151 04420307
20140 IVFAIL = IVFAIL + 1 04430307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04440307
0151 CONTINUE 04450307
C 04460307
C **** FCVS PROGRAM 307 - TEST 015 **** 04470307
C 04480307
C FIND THE TANGENT OF 540 DEGREES (9.4248 RADIANS) 04490307
C 04500307
IVTNUM = 15 04510307
IF (ICZERO) 30150, 0150, 30150 04520307
0150 CONTINUE 04530307
RVCOMP = 10.0 04540307
RAON11(2) = 3 * PI 04550307
RVCOMP = TAN (RAON11(2)) 04560307
RVCORR = 0.0 04570307
40150 IF (RVCOMP + .00005) 20150, 10150, 40151 04580307
40151 IF (RVCOMP - .00005) 10150, 10150, 20150 04590307
30150 IVDELE = IVDELE + 1 04600307
WRITE (I02,80000) IVTNUM 04610307
IF (ICZERO) 10150, 0161, 20150 04620307
10150 IVPASS = IVPASS + 1 04630307
WRITE (I02,80002) IVTNUM 04640307
GO TO 0161 04650307
20150 IVFAIL = IVFAIL + 1 04660307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04670307
0161 CONTINUE 04680307
C 04690307
C **** FCVS PROGRAM 307 - TEST 016 **** 04700307
C 04710307
C FIND THE TANGENT OF 30 DEGREES (.52360 RADIANS) 04720307
C 04730307
IVTNUM = 16 04740307
IF (ICZERO) 30160, 0160, 30160 04750307
0160 CONTINUE 04760307
RVCOMP = 10.0 04770307
RVON01 = PI/6 04780307
RVCOMP = TAN (RVON01) 04790307
RVCORR = .57735 04800307
40160 IF (RVCOMP - .57730) 20160, 10160, 40161 04810307
40161 IF (RVCOMP - .57740) 10160, 10160, 20160 04820307
30160 IVDELE = IVDELE + 1 04830307
WRITE (I02,80000) IVTNUM 04840307
IF (ICZERO) 10160, 0171, 20160 04850307
10160 IVPASS = IVPASS + 1 04860307
WRITE (I02,80002) IVTNUM 04870307
GO TO 0171 04880307
20160 IVFAIL = IVFAIL + 1 04890307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04900307
0171 CONTINUE 04910307
C 04920307
C **** FCVS PROGRAM 307 - TEST 017 **** 04930307
C 04940307
C FIND THE TANGENT OF 30 DEGREES BY DIVIDING THE SINE OF 30 DEGREES 04950307
C BY THE COSINE OF 30 DEGREES. 04960307
C 04970307
IVTNUM = 17 04980307
IF (ICZERO) 30170, 0170, 30170 04990307
0170 CONTINUE 05000307
RVCOMP = 10.0 05010307
RVON01 = PI/6 05020307
RVCOMP = SIN(RVON01)/COS(RVON01) 05030307
RVCORR = .57735 05040307
40170 IF (RVCOMP - .57730) 20170, 10170, 40171 05050307
40171 IF (RVCOMP - .57740) 10170, 10170, 20170 05060307
30170 IVDELE = IVDELE + 1 05070307
WRITE (I02,80000) IVTNUM 05080307
IF (ICZERO) 10170, 0181, 20170 05090307
10170 IVPASS = IVPASS + 1 05100307
WRITE (I02,80002) IVTNUM 05110307
GO TO 0181 05120307
20170 IVFAIL = IVFAIL + 1 05130307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05140307
0181 CONTINUE 05150307
C 05160307
C TEST 018 THROUGH TEST 021 CONTAIN INTRINSIC FUNCTION TESTS FOR 05170307
C FINDING THE TRIGONOMETRIC ARCSINE (ASIN) WHERE THE FUNCTION AND 05180307
C ARGUMENT TYPES ARE BOTH REAL. THE ABSOLUTE VALUES OF ALL 05190307
C ARGUMENTS ARE LESS THAN OR EQUAL TO ONE. THE FUNCTION VALUES 05200307
C ARE EXPRESSED IN RADIANS WHERE ONE RADIAN EQUALS 57.296 DEGREES. 05210307
C 05220307
C 05230307
C **** FCVS PROGRAM 307 - TEST 018 **** 05240307
C 05250307
C THE ARCSINE OF +1. IS 90 DEGREES (1.5708 RADIANS) 05260307
C 05270307
IVTNUM = 18 05280307
IF (ICZERO) 30180, 0180, 30180 05290307
0180 CONTINUE 05300307
RVCOMP = 10.0 05310307
RVCOMP = ASIN (+1.0) 05320307
RVCORR = 1.5708 05330307
40180 IF (RVCOMP - 1.5703) 20180, 10180, 40181 05340307
40181 IF (RVCOMP - 1.5713) 10180, 10180, 20180 05350307
30180 IVDELE = IVDELE + 1 05360307
WRITE (I02,80000) IVTNUM 05370307
IF (ICZERO) 10180, 0191, 20180 05380307
10180 IVPASS = IVPASS + 1 05390307
WRITE (I02,80002) IVTNUM 05400307
GO TO 0191 05410307
20180 IVFAIL = IVFAIL + 1 05420307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05430307
0191 CONTINUE 05440307
C 05450307
C **** FCVS PROGRAM 307 - TEST 019 **** 05460307
C 05470307
C THE ARCSINE OF -1. IS -90 DEGREES (-1.5708 RADIANS) 05480307
C 05490307
IVTNUM = 19 05500307
IF (ICZERO) 30190, 0190, 30190 05510307
0190 CONTINUE 05520307
RVCOMP = 10.0 05530307
RVON01 = -1.0 05540307
RVCOMP = ASIN(RVON01) 05550307
RVCORR = -1.5708 05560307
40190 IF (RVCOMP + 1.5713) 20190, 10190, 40191 05570307
40191 IF (RVCOMP + 1.5703) 10190, 10190, 20190 05580307
30190 IVDELE = IVDELE + 1 05590307
WRITE (I02,80000) IVTNUM 05600307
IF (ICZERO) 10190, 0201, 20190 05610307
10190 IVPASS = IVPASS + 1 05620307
WRITE (I02,80002) IVTNUM 05630307
GO TO 0201 05640307
20190 IVFAIL = IVFAIL + 1 05650307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05660307
0201 CONTINUE 05670307
C 05680307
C **** FCVS PROGRAM 307 - TEST 020 **** 05690307
C 05700307
C THE ARCSINE OF -.5 TS -30 DEGREES (-.52360 RADIANS) 05710307
C 05720307
IVTNUM = 20 05730307
IF (ICZERO) 30200, 0200, 30200 05740307
0200 CONTINUE 05750307
RVCOMP = 10.0 05760307
RAON11(1) = -.5 05770307
RVCOMP = ASIN (RAON11(1)) 05780307
RVCORR = -.52360 05790307
40200 IF (RVCOMP + .52365) 20200, 10200, 40201 05800307
40201 IF (RVCOMP + .52355) 10200, 10200, 20200 05810307
30200 IVDELE = IVDELE + 1 05820307
WRITE (I02,80000) IVTNUM 05830307
IF (ICZERO) 10200, 0211, 20200 05840307
10200 IVPASS = IVPASS + 1 05850307
WRITE (I02,80002) IVTNUM 05860307
GO TO 0211 05870307
20200 IVFAIL = IVFAIL + 1 05880307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05890307
0211 CONTINUE 05900307
C 05910307
C **** FCVS PROGRAM 307 - TEST 021 **** 05920307
C 05930307
C THE ARCSINE OF 0.0 IS 0 DEGREES (0.0 RADIANS) 05940307
C 05950307
IVTNUM = 21 05960307
IF (ICZERO) 30210, 0210, 30210 05970307
0210 CONTINUE 05980307
RVCOMP = 10.0 05990307
RVON01 = 0.0 06000307
RVCOMP = ASIN (RVON01) 06010307
RVCORR = 0.0 06020307
40210 IF (RVCOMP) 20210, 10210, 20210 06030307
30210 IVDELE = IVDELE + 1 06040307
WRITE (I02,80000) IVTNUM 06050307
IF (ICZERO) 10210, 0221, 20210 06060307
10210 IVPASS = IVPASS + 1 06070307
WRITE (I02,80002) IVTNUM 06080307
GO TO 0221 06090307
20210 IVFAIL = IVFAIL + 1 06100307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06110307
0221 CONTINUE 06120307
C 06130307
C TEST 022 THROUGH TEST 025 CONTAIN INTRINSIC FUNCTION TESTS FOR 06140307
C FINDING THE TRIGONOMETRIC ARCCOSINE (ACOS) WHERE THE FUNCTION 06150307
C AND ARGUMENT TYPES ARE BOTH REAL. THE ABSOLUTE VALUES ALL 06160307
C ARGUMENTS ARE LESS THAN OR EQUAL TO ONE. THE FUNCTION VALUES 06170307
C ARE EXPRESSED IN RADIANS WHERE ONE RADIAN EQUALS 57.296 DEGREES. 06180307
C 06190307
C 06200307
C **** FCVS PROGRAM 307 - TEST 022 **** 06210307
C 06220307
C THE ARCCOSINE OF +1. IS 0 DEGREES ( 0.0 RADIANS) 06230307
C 06240307
IVTNUM = 22 06250307
IF (ICZERO) 30220, 0220, 30220 06260307
0220 CONTINUE 06270307
RVCOMP = 10.0 06280307
RVCOMP = ACOS(+1.) 06290307
RVCORR = 0.0 06300307
40220 IF (RVCOMP + .00005) 20220, 10220, 40221 06310307
40221 IF (RVCOMP - .00005) 10220, 10220, 20220 06320307
30220 IVDELE = IVDELE + 1 06330307
WRITE (I02,80000) IVTNUM 06340307
IF (ICZERO) 10220, 0231, 20220 06350307
10220 IVPASS = IVPASS + 1 06360307
WRITE (I02,80002) IVTNUM 06370307
GO TO 0231 06380307
20220 IVFAIL = IVFAIL + 1 06390307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06400307
0231 CONTINUE 06410307
C 06420307
C **** FCVS PROGRAM 307 - TEST 023 **** 06430307
C 06440307
C THE ARCCOSINE OF -1. IS 180 DEGREES (3.1416 RADIANS) 06450307
C 06460307
IVTNUM = 23 06470307
IF (ICZERO) 30230, 0230, 30230 06480307
0230 CONTINUE 06490307
RVCOMP = 10.0 06500307
RVON01 = -1.0 06510307
RVCOMP = ACOS (RVON01) 06520307
RVCORR = 3.1416 06530307
40230 IF (RVCOMP - 3.1411) 20230, 10230, 40231 06540307
40231 IF (RVCOMP - 3.1421) 10230, 10230, 20230 06550307
30230 IVDELE = IVDELE + 1 06560307
WRITE (I02,80000) IVTNUM 06570307
IF (ICZERO) 10230, 0241, 20230 06580307
10230 IVPASS = IVPASS + 1 06590307
WRITE (I02,80002) IVTNUM 06600307
GO TO 0241 06610307
20230 IVFAIL = IVFAIL + 1 06620307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06630307
0241 CONTINUE 06640307
C 06650307
C **** FCVS PROGRAM 307 - TEST 024 **** 06660307
C 06670307
C THE ARCCOSINE OF -.5 IS 120 DEGREES (2.0944 RADIANS) 06680307
C 06690307
IVTNUM = 24 06700307
IF (ICZERO) 30240, 0240, 30240 06710307
0240 CONTINUE 06720307
RVCOMP = 10.0 06730307
RAON11(1) = -.5 06740307
RVCOMP = ACOS (RAON11(1)) 06750307
RVCORR = 2.0944 06760307
40240 IF (RVCOMP - 2.0939) 20240, 10240, 40241 06770307
40241 IF (RVCOMP - 2.0949) 10240, 10240, 20240 06780307
30240 IVDELE = IVDELE + 1 06790307
WRITE (I02,80000) IVTNUM 06800307
IF (ICZERO) 10240, 0251, 20240 06810307
10240 IVPASS = IVPASS + 1 06820307
WRITE (I02,80002) IVTNUM 06830307
GO TO 0251 06840307
20240 IVFAIL = IVFAIL + 1 06850307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06860307
0251 CONTINUE 06870307
C 06880307
C **** FCVS PROGRAM 307 - TEST 025 **** 06890307
C 06900307
C THE ARCCOSINE OF 0.0 IS 90 DEGREES (1.5708 RADIANS) 06910307
C 06920307
IVTNUM = 25 06930307
IF (ICZERO) 30250, 0250, 30250 06940307
0250 CONTINUE 06950307
RVCOMP = 10.0 06960307
RVCOMP = ACOS (0.) 06970307
RVCORR = 1.5708 06980307
40250 IF (RVCOMP - 1.5703) 20250, 10250, 40251 06990307
40251 IF (RVCOMP - 1.5713) 10250, 10250, 20250 07000307
30250 IVDELE = IVDELE + 1 07010307
WRITE (I02,80000) IVTNUM 07020307
IF (ICZERO) 10250, 0261, 20250 07030307
10250 IVPASS = IVPASS + 1 07040307
WRITE (I02,80002) IVTNUM 07050307
GO TO 0261 07060307
20250 IVFAIL = IVFAIL + 1 07070307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07080307
0261 CONTINUE 07090307
C 07100307
C TEST 026 THROUGH TEST 028 CONTAIN INTRINSIC FUNCTION TESTS FOR 07110307
C FINDING THE HYPERBOLIC SINE (SINH) WHERE THE FUNCTION AND 07120307
C ARGUMENT TYPES ARE BOTH REAL. ONLY POSITIVE ARGUMENTS ARE 07130307
C TESTED. 07140307
C 07150307
C 07160307
C **** FCVS PROGRAM 307 - TEST 026 **** 07170307
C 07180307
C CONSTANT ARGUMENT 07190307
C 07200307
IVTNUM = 26 07210307
IF (ICZERO) 30260, 0260, 30260 07220307
0260 CONTINUE 07230307
RVCOMP = 10.0 07240307
RVCOMP = SINH (0.0) 07250307
RVCORR = 0.0 07260307
40260 IF (RVCOMP + .00005) 20260, 10260, 40261 07270307
40261 IF (RVCOMP - .00005) 10260, 10260, 20260 07280307
30260 IVDELE = IVDELE + 1 07290307
WRITE (I02,80000) IVTNUM 07300307
IF (ICZERO) 10260, 0271, 20260 07310307
10260 IVPASS = IVPASS + 1 07320307
WRITE (I02,80002) IVTNUM 07330307
GO TO 0271 07340307
20260 IVFAIL = IVFAIL + 1 07350307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07360307
0271 CONTINUE 07370307
C 07380307
C **** FCVS PROGRAM 307 - TEST 027 **** 07390307
C 07400307
C VARIABLE ARGUMENT 07410307
C 07420307
IVTNUM = 27 07430307
IF (ICZERO) 30270, 0270, 30270 07440307
0270 CONTINUE 07450307
RVCOMP =10.0 07460307
RVON01 = 2.0 07470307
RVCOMP = SINH (RVON01) 07480307
RVCORR = 3.6269 07490307
40270 IF (RVCOMP - 3.6264) 20270, 10270, 40271 07500307
40271 IF (RVCOMP - 3.6274) 10270, 10270, 20270 07510307
30270 IVDELE = IVDELE + 1 07520307
WRITE (I02,80000) IVTNUM 07530307
IF (ICZERO) 10270, 0281, 20270 07540307
10270 IVPASS = IVPASS + 1 07550307
WRITE (I02,80002) IVTNUM 07560307
GO TO 0281 07570307
20270 IVFAIL = IVFAIL + 1 07580307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07590307
0281 CONTINUE 07600307
C 07610307
C **** FCVS PROGRAM 307 - TEST 028 **** 07620307
C 07630307
C ARRAY ELEMENT NAME ARGUMENT 07640307
C 07650307
IVTNUM = 28 07660307
IF (ICZERO) 30280, 0280, 30280 07670307
0280 CONTINUE 07680307
RVCOMP = 10.0 07690307
RAON11(1) = 6.0 07700307
RVCOMP = SINH (RAON11(1)) 07710307
RVCORR = 201.71 07720307
40280 IF (RVCOMP - 201.66) 20280, 10280, 40281 07730307
40281 IF (RVCOMP - 201.76) 10280, 10280, 20280 07740307
30280 IVDELE = IVDELE + 1 07750307
WRITE (I02,80000) IVTNUM 07760307
IF (ICZERO) 10280, 0291, 20280 07770307
10280 IVPASS = IVPASS + 1 07780307
WRITE (I02,80002) IVTNUM 07790307
GO TO 0291 07800307
20280 IVFAIL = IVFAIL + 1 07810307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07820307
0291 CONTINUE 07830307
C 07840307
C TEST 029 THROUGH TEST 031 CONTAIN INTRINSIC FUNCTION TESTS FOR 07850307
C FINDING THE HYPERBOLIC COSINE (COSH) WHERE THE FUNCTION AND 07860307
C ARGUMENT TYPES ARE BOTH REAL. ONLY POSITIVE ARGUMENTS ARE TESTED.07870307
C 07880307
C 07890307
C **** FCVS PROGRAM 307 - TEST 029 **** 07900307
C 07910307
C CONSTANT ARGUMENT 07920307
C 07930307
IVTNUM = 29 07940307
IF (ICZERO) 30290, 0290, 30290 07950307
0290 CONTINUE 07960307
RVCOMP = 10.0 07970307
RVCOMP = COSH (0.0) 07980307
RVCORR = 1.0 07990307
40290 IF (RVCOMP - .9995) 20290, 10290, 40291 08000307
40291 IF (RVCOMP - 1.0005) 10290, 10290, 20290 08010307
30290 IVDELE = IVDELE + 1 08020307
WRITE (I02,80000) IVTNUM 08030307
IF (ICZERO) 10290, 0301, 20290 08040307
10290 IVPASS = IVPASS + 1 08050307
WRITE (I02,80002) IVTNUM 08060307
GO TO 0301 08070307
20290 IVFAIL = IVFAIL + 1 08080307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08090307
0301 CONTINUE 08100307
C 08110307
C **** FCVS PROGRAM 307 - TEST 030 **** 08120307
C 08130307
C VARIABLE ARGUMENT 08140307
C 08150307
IVTNUM = 30 08160307
IF (ICZERO) 30300, 0300, 30300 08170307
0300 CONTINUE 08180307
RVCOMP = 10.0 08190307
RVON01 = 2.0 08200307
RVCOMP = COSH (RVON01) 08210307
RVCORR = 3.7622 08220307
40300 IF (RVCOMP - 3.7617) 20300, 10300, 40301 08230307
40301 IF (RVCOMP - 3.7627) 10300, 10300, 20300 08240307
30300 IVDELE = IVDELE + 1 08250307
WRITE (I02,80000) IVTNUM 08260307
IF (ICZERO) 10300, 0311, 20300 08270307
10300 IVPASS = IVPASS + 1 08280307
WRITE (I02,80002) IVTNUM 08290307
GO TO 0311 08300307
20300 IVFAIL = IVFAIL + 1 08310307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08320307
0311 CONTINUE 08330307
C 08340307
C **** FCVS PROGRAM 307 - TEST 031 **** 08350307
C 08360307
C ARRAY ELEMENT NAME ARGUMENT 08370307
C 08380307
IVTNUM = 31 08390307
IF (ICZERO) 30310, 0310, 30310 08400307
0310 CONTINUE 08410307
RVCOMP = 10.0 08420307
RAON11(2) = 6.0 08430307
RVCOMP = COSH (RAON11(2)) 08440307
RVCORR = 201.72 08450307
40310 IF (RVCOMP - 201.67) 20310, 10310, 40311 08460307
40311 IF (RVCOMP - 201.77) 10310, 10310, 20310 08470307
30310 IVDELE = IVDELE + 1 08480307
WRITE (I02,80000) IVTNUM 08490307
IF (ICZERO) 10310, 0321, 20310 08500307
10310 IVPASS = IVPASS + 1 08510307
WRITE (I02,80002) IVTNUM 08520307
GO TO 0321 08530307
20310 IVFAIL = IVFAIL + 1 08540307
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08550307
0321 CONTINUE 08560307
C 08570307
C 08580307
C WRITE OUT TEST SUMMARY 08590307
C 08600307
WRITE (I02,90004) 08610307
WRITE (I02,90014) 08620307
WRITE (I02,90004) 08630307
WRITE (I02,90000) 08640307
WRITE (I02,90004) 08650307
WRITE (I02,90020) IVFAIL 08660307
WRITE (I02,90022) IVPASS 08670307
WRITE (I02,90024) IVDELE 08680307
STOP 08690307
90001 FORMAT (" ",24X,"FM307") 08700307
90000 FORMAT (" ",20X,"END OF PROGRAM FM307" ) 08710307
C 08720307
C FORMATS FOR TEST DETAIL LINES 08730307
C 08740307
80000 FORMAT (" ",4X,I5,6X,"DELETED") 08750307
80002 FORMAT (" ",4X,I5,7X,"PASS") 08760307
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08770307
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08780307
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 08790307
C 08800307
C FORMAT STATEMENTS FOR PAGE HEADERS 08810307
C 08820307
90002 FORMAT ("1") 08830307
90004 FORMAT (" ") 08840307
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08850307
90008 FORMAT (" ",21X,"VERSION 2.1" ) 08860307
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08870307
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 08880307
90014 FORMAT (" ",5X,"----------------------------------------------" ) 08890307
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08900307
C 08910307
C FORMAT STATEMENTS FOR RUN SUMMARY 08920307
C 08930307
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 08940307
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 08950307
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 08960307
END 08970307