C***********************************************************************
C*****  FORTRAN 77
C*****   FM813
C*****                       YCSQRT - (177)
C*****
C***********************************************************************
C*****  GENERAL PURPOSE                                         ANS REF
C*****    TEST INTRINSIC FUNCTION CSQRT                          15.3
C*****                                                          TABLE 5
C*****
CBB** ********************** BBCCOMNT **********************************
C****
C****            1978 FORTRAN COMPILER VALIDATION SYSTEM
C****                          VERSION 2.0
C****
C****
C****           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO
C****                   GENERAL SERVICES ADMINISTRATION
C****                   FEDERAL SOFTWARE TESTING CENTER
C****                   5203 LEESBURG PIKE, SUITE 1100
C****                      FALLS CHURCH, VA. 22041
C****
C****                          (703) 756-6153
C****
CBE** ********************** BBCCOMNT **********************************
C*****
C*****  S P E C F I C A T I O N S  SEGMENT 177
        COMPLEX AVC, BVC, CVC, ZVCORR
        REAL R2E(2)
        EQUIVALENCE (AVC, R2E)
C*****
CBB** ********************** BBCINITA **********************************
C**** SPECIFICATION STATEMENTS
C****
      CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20,
     1          ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13
CBE** ********************** BBCINITA **********************************
CBB** ********************** BBCINITB **********************************
C**** INITIALIZE SECTION
      DATA  ZVERS,                  ZVERSD,             ZDATE
     1      /'VERSION 2.0  ',  '82/08/02*18.33.46',  '*NO DATE*TIME'/
      DATA       ZCOMPL,             ZNAME,             ZTAPE
     1      /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/
      DATA       ZPROJ,           ZTAPED,         ZPROG
     1      /'*NO PROJECT*',   '*NO TAPE DATE',  'XXXXX'/
      DATA   REMRKS /'                               '/
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED
C**** FOR IDENTIFYING THE TEST ENVIRONMENT
C****
CZ01  ZVERS  = 'VERSION OF THE COMPILER VALIDATION SYSTEM'
CZ02  ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM'
CZ03  ZPROG  = 'PROGRAM NAME'
      ZDATE  = ' DEC. 1983       '
      ZCOMPL = ' ICL VME FORTRAN77  '
      ZPROJ  = ' LANG. CENTRE'
      ZNAME  = 'ICL                 '
      ZTAPE  = 'M999      '
      ZTAPED = '831005       '
C
      IVPASS = 0
      IVFAIL = 0
      IVDELE = 0
      IVINSP = 0
      IVTOTL = 0
      IVTOTN = 0
      ICZERO = 0
C
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.
      I01 = 05
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.
      I02 = 06
C
CX010   REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER).
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5
CX011   REPLACED BY FEXEC X-011 CONTROL CARD.  CX011 IS FOR SYSTEMS
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010.
C
CX020   REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER).
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6
CX021   REPLACED BY FEXEC X-021 CONTROL CARD.  CX021 IS FOR SYSTEMS
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020.
C
CBE** ********************** BBCINITB **********************************
      NUVI = I02
      IVTOTL = 13
      ZPROG = 'FM813'
CBB** ********************** BBCHED0A **********************************
C****
C**** WRITE REPORT TITLE
C****
      WRITE (I02, 90002)
      WRITE (I02, 90006)
      WRITE (I02, 90007)
      WRITE (I02, 90008)  ZVERS, ZVERSD
      WRITE (I02, 90009)  ZPROG, ZPROG
      WRITE (I02, 90010)  ZDATE, ZCOMPL
CBE** ********************** BBCHED0A **********************************
C*****
C*****    HEADER FOR SEGMENT 177
        WRITE(NUVI,17700)
17700   FORMAT(1H , / 36H  YCSQRT - (177) INTRINSIC FUNCTIONS//
     1         29H  CSQRT (COMPLEX SQUARE ROOT)//
     2         17H  ANS REF. - 15.3)
CBB** ********************** BBCHED0B **********************************
C**** WRITE DETAIL REPORT HEADERS
C****
      WRITE (I02,90004)
      WRITE (I02,90004)
      WRITE (I02,90013)
      WRITE (I02,90014)
      WRITE (I02,90015) IVTOTL
CBE** ********************** BBCHED0B **********************************
C*****
CT001*  TEST 1                                                   ZERO
           IVTNUM = 1
        BVC = (0.0, 0.0)
        AVC = CSQRT(BVC)
           IF (R2E(1) + 0.50000E-04) 20010, 40012, 40011
40011      IF (R2E(1) - 0.50000E-04) 40012, 40012, 20010
40012      IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010
40010      IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010
10010      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0011
20010      IVFAIL = IVFAIL + 1
           ZVCORR = (0.00000000000000, 0.00000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0011      CONTINUE
CT002*  TEST 2                                  POSITIVE REAL NUMBERS
           IVTNUM = 2
        BVC = (4.0, 4.0)
        AVC = CSQRT(BVC - (0.0, 4.0))
           IF (R2E(1) - 0.19999E+01) 20020, 40022, 40021
40021      IF (R2E(1) - 0.20001E+01) 40022, 40022, 20020
40022      IF (R2E(2) + 0.50000E-04) 20020, 10020, 40020
40020      IF (R2E(2) - 0.50000E-04) 10020, 10020, 20020
10020      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0021
20020      IVFAIL = IVFAIL + 1
           ZVCORR = (2.00000000000000, 0.00000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0021      CONTINUE
CT003*  TEST 3                                    POSITIVE REAL NUMBERS
           IVTNUM = 3
        BVC = (4.0, 4.0)
        CVC = (4.0, -4.0)
        AVC = CSQRT(BVC + CVC)
           IF (R2E(1) - 0.28282E+01) 20030, 40032, 40031
40031      IF (R2E(1) - 0.28286E+01) 40032, 40032, 20030
40032      IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030
40030      IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030
10030      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0031
20030      IVFAIL = IVFAIL + 1
           ZVCORR = (2.8284271247462, 0.00000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0031      CONTINUE
CT004*  TEST 4                                    POSITIVE REAL NUMBERS
           IVTNUM = 4
        BVC = (4.0, 0.0)
        CVC = BVC + (5.0, 0.0)
        AVC = CSQRT(CVC)
           IF (R2E(1) - 0.29998E+01) 20040, 40042, 40041
40041      IF (R2E(1) - 0.30002E+01) 40042, 40042, 20040
40042      IF (R2E(2) + 0.50000E-04) 20040, 10040, 40040
40040      IF (R2E(2) - 0.50000E-04) 10040, 10040, 20040
10040      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0041
20040      IVFAIL = IVFAIL + 1
           ZVCORR = (3.00000000000000, 0.00000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0041      CONTINUE
CT005*  TEST  5                                 NEGATIVE REAL NUMBERS
           IVTNUM = 5
        BVC = (-1.0, 0.0)
        AVC = CSQRT(BVC)
           IF (R2E(1) + 0.50000E-04) 20050, 40052, 40051
40051      IF (R2E(1) - 0.50000E-04) 40052, 40052, 20050
40052      IF (R2E(2) - 0.99995E+00) 20050, 10050, 40050
40050      IF (R2E(2) - 0.10001E+01) 10050, 10050, 20050
10050      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0051
20050      IVFAIL = IVFAIL + 1
           ZVCORR = (0.00000000000000, 1.0000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0051      CONTINUE
CT006*  TEST 6                                    NEGATIVE REAL NUMBERS
           IVTNUM = 6
        AVC = CSQRT((-5.0, 0.0))
           IF (R2E(1) + 0.50000E-04) 20060, 40062, 40061
40061      IF (R2E(1) - 0.50000E-04) 40062, 40062, 20060
40062      IF (R2E(2) - 0.22359E+01) 20060, 10060, 40060
40060      IF (R2E(2) - 0.22362E+01) 10060, 10060, 20060
10060      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0061
20060      IVFAIL = IVFAIL + 1
           ZVCORR = (0.00000000000000, 2.2360679774998)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0061      CONTINUE
CT007*  TEST 7                                    NEGATIVE REAL NUMBERS
           IVTNUM = 7
        BVC = (-25.0, 0.0)
        AVC = CSQRT(BVC)
           IF (R2E(1) + 0.50000E-04) 20070, 40072, 40071
40071      IF (R2E(1) - 0.50000E-04) 40072, 40072, 20070
40072      IF (R2E(2) - 0.49997E+01) 20070, 10070, 40070
40070      IF (R2E(2) - 0.50003E+01) 10070, 10070, 20070
10070      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0071
20070      IVFAIL = IVFAIL + 1
           ZVCORR = (0.00000000000000, 5.0000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0071      CONTINUE
CT008*  TEST 8                  VARIABLES SUPPLIED WITHIN AN EXPRESSION
           IVTNUM = 8
        BVC = (0.203125,0.0)
        CVC = (0.0, 1.3125)
        AVC = CSQRT(BVC + CVC)
           IF (R2E(1) - 0.87495E+00) 20080, 40082, 40081
40081      IF (R2E(1) - 0.87505E+00) 40082, 40082, 20080
40082      IF (R2E(2) - 0.74996E+00) 20080, 10080, 40080
40080      IF (R2E(2) - 0.75004E+00) 10080, 10080, 20080
10080      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0081
20080      IVFAIL = IVFAIL + 1
           ZVCORR = (0.87500000000000, 0.75000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0081      CONTINUE
CT009*  TEST 9                  VARIABLES SUPPLIED WITHIN AN EXPRESSION
           IVTNUM = 9
        BVC = (1.0,0.0)
        AVC = CSQRT(BVC - (0.38671875, 0.515625))
           IF (R2E(1) - 0.84094E+00) 20090, 40092, 40091
40091      IF (R2E(1) - 0.84103E+00) 40092, 40092, 20090
40092      IF (R2E(2) + 0.30658E+00) 20090, 10090, 40090
40090      IF (R2E(2) + 0.30654E+00) 10090, 10090, 20090
10090      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0091
20090      IVFAIL = IVFAIL + 1
           ZVCORR = (0.84098742159541, -0.30655928183909)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0091      CONTINUE
CT010*  TEST 10                 VARIABLES SUPPLIED WITHIN AN EXPRESSION
           IVTNUM = 10
        BVC = (-0.375, 0.5)
        AVC = CSQRT(BVC + BVC)
           IF (R2E(1) - 0.49997E+00) 20100, 40102, 40101
40101      IF (R2E(1) - 0.50003E+00) 40102, 40102, 20100
40102      IF (R2E(2) - 0.99995E+00) 20100, 10100, 40100
40100      IF (R2E(2) - 0.10001E+01) 10100, 10100, 20100
10100      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0101
20100      IVFAIL = IVFAIL + 1
           ZVCORR = (0.50000000000000, 1.0000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0101      CONTINUE
CT011*  TEST 11                              PURELY IMAGINARY NUMBERS
           IVTNUM = 11
        AVC = CSQRT((0.0, 2.0))
           IF (R2E(1) - 0.99995E+00) 20110, 40112, 40111
40111      IF (R2E(1) - 0.10001E+01) 40112, 40112, 20110
40112      IF (R2E(2) - 0.99995E+00) 20110, 10110, 40110
40110      IF (R2E(2) - 0.10001E+01) 10110, 10110, 20110
10110      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0111
20110      IVFAIL = IVFAIL + 1
           ZVCORR = (1.00000000000000, 1.0000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0111      CONTINUE
CT012*  TEST 12                                PURELY IMAGINARY NUMBERS
           IVTNUM = 12
        AVC = CSQRT((0.0, -8.0))
           IF (R2E(1) - 0.19999E+01) 20120, 40122, 40121
40121      IF (R2E(1) - 0.20001E+01) 40122, 40122, 20120
40122      IF (R2E(2) + 0.20001E+01) 20120, 10120, 40120
40120      IF (R2E(2) + 0.19999E+01) 10120, 10120, 20120
10120      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0121
20120      IVFAIL = IVFAIL + 1
           ZVCORR = (2.00000000000000, -2.0000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0121      CONTINUE
CT013*  TEST 13                                      (-0.5,SQRT(3)/2)
           IVTNUM = 13
        BVC = (-0.5, -0.8660254038)
        CVC = CSQRT(CSQRT(BVC))
        AVC = CVC - BVC * (0.0, 1.0)
           IF (R2E(1) + 0.50000E-04) 20130, 40132, 40131
40131      IF (R2E(1) - 0.50000E-04) 40132, 40132, 20130
40132      IF (R2E(2) + 0.50000E-04) 20130, 10130, 40130
40130      IF (R2E(2) - 0.50000E-04) 10130, 10130, 20130
10130      IVPASS = IVPASS + 1
           WRITE (NUVI, 80002) IVTNUM
           GO TO 0131
20130      IVFAIL = IVFAIL + 1
           ZVCORR = (0.00000000000000, 0.00000000000000)
           WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR
 0131      CONTINUE
C*****
CBB** ********************** BBCSUM0  **********************************
C**** WRITE OUT TEST SUMMARY
C****
      IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP
      WRITE (I02, 90004)
      WRITE (I02, 90014)
      WRITE (I02, 90004)
      WRITE (I02, 90020) IVPASS
      WRITE (I02, 90022) IVFAIL
      WRITE (I02, 90024) IVDELE
      WRITE (I02, 90026) IVINSP
      WRITE (I02, 90028) IVTOTN, IVTOTL
CBE** ********************** BBCSUM0  **********************************
CBB** ********************** BBCFOOT0 **********************************
C**** WRITE OUT REPORT FOOTINGS
C****
      WRITE (I02,90016) ZPROG, ZPROG
      WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED
      WRITE (I02,90019)
CBE** ********************** BBCFOOT0 **********************************
CBB** ********************** BBCFMT0A **********************************
C**** FORMATS FOR TEST DETAIL LINES
C****
80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31)
80002 FORMAT (1H ,2X,I3,4X,7H PASS  ,32X,A31)
80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31)
80008 FORMAT (1H ,2X,I3,4X,7H FAIL  ,32X,A31)
80010 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,15X,10HCOMPUTED= ,
     1I6,/,1H ,15X,10HCORRECT=  ,I6)
80012 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     1E12.5,/,1H ,16X,10HCORRECT=  ,E12.5)
80018 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     1A21,/,1H ,16X,10HCORRECT=  ,A21)
80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31)
80022 FORMAT (1H ,16X,10HCORRECT=  ,A21,1X,A31)
80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31)
80026 FORMAT (1H ,16X,10HCORRECT=  ,I6,16X,A31)
80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31)
80030 FORMAT (1H ,16X,10HCORRECT=  ,E12.5,10X,A31)
80050 FORMAT (1H ,48X,A31)
CBE** ********************** BBCFMT0A **********************************
CBB** ********************** BBCFMAT1 **********************************
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE
C****
80031 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     1D17.10,/,1H ,16X,10HCORRECT=  ,D17.10)
80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31)
80035 FORMAT (1H ,16X,10HCORRECT=  ,D17.10,10X,A31)
80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31)
80039 FORMAT (1H ,16X,10HCORRECT=  ,1H(,E12.5,2H, ,E12.5,1H),6X,A31)
80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31)
80043 FORMAT (1H ,16X,10HCORRECT=  ,1H(,F12.5,2H, ,F12.5,1H),6X,A31)
80045 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT=  ,
     21H(,F12.5,2H, ,F12.5,1H))
CBE** ********************** BBCFMAT1 **********************************
CBB** ********************** BBCFMT0B **********************************
C**** FORMAT STATEMENTS FOR PAGE HEADERS
C****
90002 FORMAT (1H1)
90004 FORMAT (1H )
90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER)
90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM)
90008 FORMAT (1H ,21X,A13,A17)
90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/)
90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H  -  COMPILER= ,A20)
90013 FORMAT (1H ,8H TEST   ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS,
     1       7X,7HREMARKS,24X)
90014 FORMAT (1H ,46H----------------------------------------------,
     1        33H---------------------------------)
90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/)
C****
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS
C****
90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/)
90018 FORMAT (1H ,A13,13X,A20,7H   *   ,A10,1H/,
     1        A13)
90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY     ,35X,15HCOPYRIGHT  1982)
C****
C**** FORMAT STATEMENTS FOR RUN SUMMARY
C****
90020 FORMAT (1H ,21X,I5,13H TESTS PASSED)
90022 FORMAT (1H ,21X,I5,13H TESTS FAILED)
90024 FORMAT (1H ,21X,I5,14H TESTS DELETED)
90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION)
90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED)
CBE** ********************** BBCFMT0B **********************************
C*****
C*****    END OF TEST SEGMENT 177
      STOP
      END