FM375.f Source File


Contents

Source Code


Source Code

      PROGRAM FM375

C***********************************************************************00010375
C*****  FORTRAN 77                                                      00020375
C*****   FM375                                                          00030375
C*****                       XASIN - (193)                              00040375
C*****                                                                  00050375
C***********************************************************************00060375
C*****  GENERAL PURPOSE                                      SUBSET REF 00070375
C*****    TEST INTRINSIC FUNCTION ASIN, ACOS                    15.3    00080375
C*****                                                         TABLE 5  00090375
C*****                                                                  00100375
CBB** ********************** BBCCOMNT **********************************00110375
C****                                                                   00120375
C****            1978 FORTRAN COMPILER VALIDATION SYSTEM                00130375
C****                          VERSION 2.1                              00140375
C****                                                                   00150375
C****                                                                   00160375
C****           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO         00170375
C****          NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00180375
C****               SOFTWARE STANDARDS VALIDATION GROUP                 00190375
C****                      BUILDING 225  RM A266                        00200375
C****                     GAITHERSBURG, MD  20899                       00210375
C****                                                                   00220375
C****                                                                   00230375
C****                                                                   00240375
CBE** ********************** BBCCOMNT **********************************00250375
CBB** ********************** BBCINITA **********************************00260375
C**** SPECIFICATION STATEMENTS                                          00270375
C****                                                                   00280375
      CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20,      00290375
     1          ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13      00300375
CBE** ********************** BBCINITA **********************************00310375
CBB** ********************** BBCINITB **********************************00320375
C**** INITIALIZE SECTION                                                00330375
      DATA  ZVERS,                  ZVERSD,             ZDATE           00340375
     1      /'VERSION 2.1  ',  '93/10/21*21.02.00',  '*NO DATE*TIME'/   00350375
      DATA       ZCOMPL,             ZNAME,             ZTAPE           00360375
     1      /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/      00370375
      DATA       ZPROJ,           ZTAPED,         ZPROG                 00380375
     1      /'*NO PROJECT*',   '*NO TAPE DATE',  'XXXXX'/               00390375
      DATA   REMRKS /'                               '/                 00400375
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED   00410375
C**** FOR IDENTIFYING THE TEST ENVIRONMENT                              00420375
C****                                                                   00430375
CZ01  ZVERS  = 'VERSION OF THE COMPILER VALIDATION SYSTEM'              00440375
CZ02  ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM'   00450375
CZ03  ZPROG  = 'PROGRAM NAME'                                           00460375
CZ04  ZDATE  = 'DATE OF TEST'                                           00470375
CZ05  ZCOMPL = 'COMPILER IDENTIFICATION'                                00480375
CZ06  ZPROJ  = 'PROJECT NUMBER/IDENTIFICATION'                          00490375
CZ07  ZNAME  = 'NAME OF USER'                                           00500375
CZ08  ZTAPE  = 'TAPE OWNER/ID'                                          00510375
CZ09  ZTAPED = 'DATE TAPE COPIED'                                       00520375
C                                                                       00530375
      IVPASS = 0                                                        00540375
      IVFAIL = 0                                                        00550375
      IVDELE = 0                                                        00560375
      IVINSP = 0                                                        00570375
      IVTOTL = 0                                                        00580375
      IVTOTN = 0                                                        00590375
      ICZERO = 0                                                        00600375
C                                                                       00610375
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00620375
      I01 = 05                                                          00630375
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00640375
      I02 = 06                                                          00650375
C                                                                       00660375
CX010   REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00670375
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00680375
CX011   REPLACED BY FEXEC X-011 CONTROL CARD.  CX011 IS FOR SYSTEMS     00690375
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010.  00700375
C                                                                       00710375
CX020   REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER).     00720375
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6       00730375
CX021   REPLACED BY FEXEC X-021 CONTROL CARD.  CX021 IS FOR SYSTEMS     00740375
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020.  00750375
C                                                                       00760375
CBE** ********************** BBCINITB **********************************00770375
      NUVI = I02                                                        00780375
      IVTOTL = 12                                                       00790375
      ZPROG = 'FM375'                                                   00800375
CBB** ********************** BBCHED0A **********************************00810375
C****                                                                   00820375
C**** WRITE REPORT TITLE                                                00830375
C****                                                                   00840375
      WRITE (I02, 90002)                                                00850375
      WRITE (I02, 90006)                                                00860375
      WRITE (I02, 90007)                                                00870375
      WRITE (I02, 90008)  ZVERS, ZVERSD                                 00880375
      WRITE (I02, 90009)  ZPROG, ZPROG                                  00890375
      WRITE (I02, 90010)  ZDATE, ZCOMPL                                 00900375
CBE** ********************** BBCHED0A **********************************00910375
C*****                                                                  00920375
C*****    HEADER FOR SEGMENT 193                                        00930375
        WRITE(NUVI,19300)                                               00940375
19300   FORMAT(" ", / "  XASIN - (193) INTRINSIC FUNCTIONS" //          00950375
     1         "  ASIN, ACOS  (ARCSIN, ARCCOSINE) " //                  00960375
     2         "  SUBSET REF. - 15.3" )                                 00970375
CBB** ********************** BBCHED0B **********************************00980375
C**** WRITE DETAIL REPORT HEADERS                                       00990375
C****                                                                   01000375
      WRITE (I02,90004)                                                 01010375
      WRITE (I02,90004)                                                 01020375
      WRITE (I02,90013)                                                 01030375
      WRITE (I02,90014)                                                 01040375
      WRITE (I02,90015) IVTOTL                                          01050375
CBE** ********************** BBCHED0B **********************************01060375
C*****                                                                  01070375
        WRITE(NUVI,19301)                                               01080375
19301   FORMAT("0",8X,"TEST OF ASIN" )                                  01090375
C*****                                                                  01100375
CT001*  TEST 1                 -1 TO CHECK PRINCIPAL VALUE AT ENDPOINTS 01110375
           IVTNUM = 1                                                   01120375
        BVS = -1.0                                                      01130375
        AVS = ASIN(BVS)                                                 01140375
           IF (AVS +  0.15709E+01) 20010, 10010, 40010                  01150375
40010      IF (AVS +  0.15707E+01) 10010, 10010, 20010                  01160375
10010      IVPASS = IVPASS + 1                                          01170375
           WRITE (NUVI, 80002) IVTNUM                                   01180375
           GO TO 0011                                                   01190375
20010      IVFAIL = IVFAIL + 1                                          01200375
           RVCORR = -1.57079632679490                                   01210375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      01220375
 0011      CONTINUE                                                     01230375
CT002*  TEST 2                 +1 TO CHECK PRINCIPAL VALUE AT ENDPOINTS 01240375
           IVTNUM = 2                                                   01250375
        AVS = ASIN(1.0)                                                 01260375
           IF (AVS -  0.15707E+01) 20020, 10020, 40020                  01270375
40020      IF (AVS -  0.15709E+01) 10020, 10020, 20020                  01280375
10020      IVPASS = IVPASS + 1                                          01290375
           WRITE (NUVI, 80002) IVTNUM                                   01300375
           GO TO 0021                                                   01310375
20020      IVFAIL = IVFAIL + 1                                          01320375
           RVCORR = 1.57079632679490                                    01330375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      01340375
 0021      CONTINUE                                                     01350375
CT003*  TEST 3                                     THE VALUE -SQRT(0.5) 01360375
           IVTNUM = 3                                                   01370375
        BVS = -SQRT(2.0) / 2.0                                          01380375
        AVS = ASIN(BVS)                                                 01390375
           IF (AVS +  0.78544E+00) 20030, 10030, 40030                  01400375
40030      IF (AVS +  0.78535E+00) 10030, 10030, 20030                  01410375
10030      IVPASS = IVPASS + 1                                          01420375
           WRITE (NUVI, 80002) IVTNUM                                   01430375
           GO TO 0031                                                   01440375
20030      IVFAIL = IVFAIL + 1                                          01450375
           RVCORR = -0.78539816339745                                   01460375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      01470375
 0031      CONTINUE                                                     01480375
CT004*  TEST 4                                            THE VALUE 0.5 01490375
           IVTNUM = 4                                                   01500375
        AVS = ASIN(1.0 / 2.0)                                           01510375
           IF (AVS -  0.52357E+00) 20040, 10040, 40040                  01520375
40040      IF (AVS -  0.52363E+00) 10040, 10040, 20040                  01530375
10040      IVPASS = IVPASS + 1                                          01540375
           WRITE (NUVI, 80002) IVTNUM                                   01550375
           GO TO 0041                                                   01560375
20040      IVFAIL = IVFAIL + 1                                          01570375
           RVCORR = 0.52359877559830                                    01580375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      01590375
 0041      CONTINUE                                                     01600375
CT005*  TEST 5                             AN ARGUMENT OF LOW MAGNITUDE 01610375
           IVTNUM = 5                                                   01620375
        AVS = ASIN(-1.0E-33)                                            01630375
           IF (AVS +  0.10001E-32) 20050, 10050, 40050                  01640375
40050      IF (AVS +  0.99995E-33) 10050, 10050, 20050                  01650375
10050      IVPASS = IVPASS + 1                                          01660375
           WRITE (NUVI, 80002) IVTNUM                                   01670375
           GO TO 0051                                                   01680375
20050      IVFAIL = IVFAIL + 1                                          01690375
           RVCORR = -1.00000000000000E-33                               01700375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      01710375
 0051      CONTINUE                                                     01720375
C*****                                                                  01730375
        WRITE(NUVI,19307)                                               01740375
19307   FORMAT("0",8X,"TEST OF ACOS" )                                  01750375
C*****                                                                  01760375
CT006*  TEST 6                  -1 TO TEST PRINCIPAL VALUE AT ENDPOINTS 01770375
           IVTNUM = 6                                                   01780375
        BVS = -1.0                                                      01790375
        AVS = ACOS(BVS)                                                 01800375
           IF (AVS -  0.31414E+01) 20060, 10060, 40060                  01810375
40060      IF (AVS -  0.31418E+01) 10060, 10060, 20060                  01820375
10060      IVPASS = IVPASS + 1                                          01830375
           WRITE (NUVI, 80002) IVTNUM                                   01840375
           GO TO 0061                                                   01850375
20060      IVFAIL = IVFAIL + 1                                          01860375
           RVCORR = 3.14159265358980                                    01870375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      01880375
 0061      CONTINUE                                                     01890375
CT007*  TEST 7                                                          01900375
           IVTNUM = 7                                                   01910375
        AVS = ACOS(1.0)                                                 01920375
           IF (AVS +  0.50000E-04) 20070, 10070, 40070                  01930375
40070      IF (AVS -  0.50000E-04) 10070, 10070, 20070                  01940375
10070      IVPASS = IVPASS + 1                                          01950375
           WRITE (NUVI, 80002) IVTNUM                                   01960375
           GO TO 0071                                                   01970375
20070      IVFAIL = IVFAIL + 1                                          01980375
           RVCORR = 0.00000000000000                                    01990375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      02000375
 0071      CONTINUE                                                     02010375
CT008*  TEST 8                                                          02020375
           IVTNUM = 8                                                   02030375
        BVS = -SQRT(2.0) / 2.0                                          02040375
        AVS = ACOS(BVS)                                                 02050375
           IF (AVS -  0.23560E+01) 20080, 10080, 40080                  02060375
40080      IF (AVS -  0.23564E+01) 10080, 10080, 20080                  02070375
10080      IVPASS = IVPASS + 1                                          02080375
           WRITE (NUVI, 80002) IVTNUM                                   02090375
           GO TO 0081                                                   02100375
20080      IVFAIL = IVFAIL + 1                                          02110375
           RVCORR = 2.35619449019234                                    02120375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      02130375
 0081      CONTINUE                                                     02140375
CT009*  TEST 9                                                          02150375
           IVTNUM = 9                                                   02160375
        AVS = ACOS(1.0 / 2.0)                                           02170375
           IF (AVS -  0.10471E+01) 20090, 10090, 40090                  02180375
40090      IF (AVS -  0.10473E+01) 10090, 10090, 20090                  02190375
10090      IVPASS = IVPASS + 1                                          02200375
           WRITE (NUVI, 80002) IVTNUM                                   02210375
           GO TO 0091                                                   02220375
20090      IVFAIL = IVFAIL + 1                                          02230375
           RVCORR = 1.04719755119660                                    02240375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      02250375
 0091      CONTINUE                                                     02260375
CT010*  TEST 10                            AN ARGUMENT OF LOW MAGNITUDE 02270375
           IVTNUM = 10                                                  02280375
        AVS = ACOS(-1.0E-33)                                            02290375
           IF (AVS -  0.15707E+01) 20100, 10100, 40100                  02300375
40100      IF (AVS -  0.15709E+01) 10100, 10100, 20100                  02310375
10100      IVPASS = IVPASS + 1                                          02320375
           WRITE (NUVI, 80002) IVTNUM                                   02330375
           GO TO 0101                                                   02340375
20100      IVFAIL = IVFAIL + 1                                          02350375
           RVCORR = 1.57079632679490                                    02360375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      02370375
 0101      CONTINUE                                                     02380375
CT011*  TEST 11        COMPARISON OF ASIN AND ACOS TO TEST RELATIONSHIP 02390375
           IVTNUM = 11                                                  02400375
        BVS = ASIN(SQRT(3.0) / 3.0)                                     02410375
        CVS = ACOS(SQRT(3.0) / 3.0)                                     02420375
        AVS = (BVS + CVS) * 2.0                                         02430375
           IF (AVS -  0.31414E+01) 20110, 10110, 40110                  02440375
40110      IF (AVS -  0.31418E+01) 10110, 10110, 20110                  02450375
10110      IVPASS = IVPASS + 1                                          02460375
           WRITE (NUVI, 80002) IVTNUM                                   02470375
           GO TO 0111                                                   02480375
20110      IVFAIL = IVFAIL + 1                                          02490375
           RVCORR = 3.14159265358979                                    02500375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      02510375
 0111      CONTINUE                                                     02520375
CT012*  TEST 12        COMPARISON OF ASIN AND ACOS TO TEST RELATIONSHIP 02530375
           IVTNUM = 12                                                  02540375
        AVS = (ASIN(+0.25) + ACOS(+0.25)) * 2.0                         02550375
           IF (AVS -  0.31414E+01) 20120, 10120, 40120                  02560375
40120      IF (AVS -  0.31418E+01) 10120, 10120, 20120                  02570375
10120      IVPASS = IVPASS + 1                                          02580375
           WRITE (NUVI, 80002) IVTNUM                                   02590375
           GO TO 0121                                                   02600375
20120      IVFAIL = IVFAIL + 1                                          02610375
           RVCORR = 3.14159265358979                                    02620375
           WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR                      02630375
 0121      CONTINUE                                                     02640375
C*****                                                                  02650375
CBB** ********************** BBCSUM0  **********************************02660375
C**** WRITE OUT TEST SUMMARY                                            02670375
C****                                                                   02680375
      IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP                        02690375
      WRITE (I02, 90004)                                                02700375
      WRITE (I02, 90014)                                                02710375
      WRITE (I02, 90004)                                                02720375
      WRITE (I02, 90020) IVPASS                                         02730375
      WRITE (I02, 90022) IVFAIL                                         02740375
      WRITE (I02, 90024) IVDELE                                         02750375
      WRITE (I02, 90026) IVINSP                                         02760375
      WRITE (I02, 90028) IVTOTN, IVTOTL                                 02770375
CBE** ********************** BBCSUM0  **********************************02780375
CBB** ********************** BBCFOOT0 **********************************02790375
C**** WRITE OUT REPORT FOOTINGS                                         02800375
C****                                                                   02810375
      WRITE (I02,90016) ZPROG, ZPROG                                    02820375
      WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED                     02830375
      WRITE (I02,90019)                                                 02840375
CBE** ********************** BBCFOOT0 **********************************02850375
CBB** ********************** BBCFMT0A **********************************02860375
C**** FORMATS FOR TEST DETAIL LINES                                     02870375
C****                                                                   02880375
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31)                           02890375
80002 FORMAT (" ",2X,I3,4X," PASS  ",32X,A31)                           02900375
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31)                           02910375
80008 FORMAT (" ",2X,I3,4X," FAIL  ",32X,A31)                           02920375
80010 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",15X,"COMPUTED= " ,           02930375
     1I6,/," ",15X,"CORRECT=  " ,I6)                                    02940375
80012 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           02950375
     1E12.5,/," ",16X,"CORRECT=  " ,E12.5)                              02960375
80018 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           02970375
     1A21,/," ",16X,"CORRECT=  " ,A21)                                  02980375
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31)                         02990375
80022 FORMAT (" ",16X,"CORRECT=  " ,A21,1X,A31)                         03000375
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31)                         03010375
80026 FORMAT (" ",16X,"CORRECT=  " ,I6,16X,A31)                         03020375
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31)                      03030375
80030 FORMAT (" ",16X,"CORRECT=  " ,E12.5,10X,A31)                      03040375
80050 FORMAT (" ",48X,A31)                                              03050375
CBE** ********************** BBCFMT0A **********************************03060375
CBB** ********************** BBCFMT0B **********************************03070375
C**** FORMAT STATEMENTS FOR PAGE HEADERS                                03080375
C****                                                                   03090375
90002 FORMAT ("1")                                                      03100375
90004 FORMAT (" ")                                                      03110375
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )03120375
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" )            03130375
90008 FORMAT (" ",21X,A13,A17)                                          03140375
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/)       03150375
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17,"  -  COMPILER= " ,A20)    03160375
90013 FORMAT (" "," TEST   ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" ,     03170375
     1       7X,"REMARKS",24X)                                          03180375
90014 FORMAT (" ","----------------------------------------------" ,    03190375
     1        "---------------------------------" )                     03200375
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/)               03210375
C****                                                                   03220375
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS                             03230375
C****                                                                   03240375
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/)          03250375
90018 FORMAT (" ",A13,13X,A20,"   *   ",A10,"/",                        03260375
     1        A13)                                                      03270375
90019 FORMAT (" ","FOR OFFICIAL USE ONLY     " ,35X,"COPYRIGHT  1982" ) 03280375
C****                                                                   03290375
C**** FORMAT STATEMENTS FOR RUN SUMMARY                                 03300375
C****                                                                   03310375
90020 FORMAT (" ",21X,I5," TESTS PASSED" )                              03320375
90022 FORMAT (" ",21X,I5," TESTS FAILED" )                              03330375
90024 FORMAT (" ",21X,I5," TESTS DELETED" )                             03340375
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" )                  03350375
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" )                  03360375
CBE** ********************** BBCFMT0B **********************************03370375
C*****                                                                  03380375
C*****    END OF TEST SEGMENT 193                                       03390375
      STOP                                                              03400375
      END                                                               03410375