130
  131      INTEGER           NOUT
  132      parameter(nout=6)
  133
  134      REAL              SFAC
  135
  136      INTEGER           ICASE, INCX, INCY, N
  137      LOGICAL           PASS
  138
  139      REAL              D12, SA, SB, SC, SS
  140      INTEGER           I, K
  141
  142      REAL              DA1(8), DATRUE(8), DB1(8), DBTRUE(8), DC1(8),
  143     +                  DS1(8), DAB(4,9), DTEMP(9), DTRUE(9,9)
  144
  146
  147      COMMON            /combla/icase, n, incx, incy, pass
  148
  149      DATA              da1/0.3e0, 0.4e0, -0.3e0, -0.4e0, -0.3e0, 0.0e0,
  150     +                  0.0e0, 1.0e0/
  151      DATA              db1/0.4e0, 0.3e0, 0.4e0, 0.3e0, -0.4e0, 0.0e0,
  152     +                  1.0e0, 0.0e0/
  153      DATA              dc1/0.6e0, 0.8e0, -0.6e0, 0.8e0, 0.6e0, 1.0e0,
  154     +                  0.0e0, 1.0e0/
  155      DATA              ds1/0.8e0, 0.6e0, 0.8e0, -0.6e0, 0.8e0, 0.0e0,
  156     +                  1.0e0, 0.0e0/
  157      DATA              datrue/0.5e0, 0.5e0, 0.5e0, -0.5e0, -0.5e0,
  158     +                  0.0e0, 1.0e0, 1.0e0/
  159      DATA              dbtrue/0.0e0, 0.6e0, 0.0e0, -0.6e0, 0.0e0,
  160     +                  0.0e0, 1.0e0, 0.0e0/
  161
  162      DATA dab/ .1e0,.3e0,1.2e0,.2e0,
  163     a          .7e0, .2e0, .6e0, 4.2e0,
  164     b          0.e0,0.e0,0.e0,0.e0,
  165     c          4.e0, -1.e0, 2.e0, 4.e0,
  166     d          6.e-10, 2.e-2, 1.e5, 10.e0,
  167     e          4.e10, 2.e-2, 1.e-5, 10.e0,
  168     f          2.e-10, 4.e-2, 1.e5, 10.e0,
  169     g          2.e10, 4.e-2, 1.e-5, 10.e0,
  170     h          4.e0, -2.e0, 8.e0, 4.e0    /
  171
  172      DATA dtrue/0.e0,0.e0, 1.3e0, .2e0, 0.e0,0.e0,0.e0, .5e0, 0.e0,
  173     a           0.e0,0.e0, 4.5e0, 4.2e0, 1.e0, .5e0, 0.e0,0.e0,0.e0,
  174     b           0.e0,0.e0,0.e0,0.e0, -2.e0, 0.e0,0.e0,0.e0,0.e0,
  175     c           0.e0,0.e0,0.e0, 4.e0, -1.e0, 0.e0,0.e0,0.e0,0.e0,
  176     d           0.e0, 15.e-3, 0.e0, 10.e0, -1.e0, 0.e0, -1.e-4,
  177     e           0.e0, 1.e0,
  178     f           0.e0,0.e0, 6144.e-5, 10.e0, -1.e0, 4096.e0, -1.e6,
  179     g           0.e0, 1.e0,
  180     h           0.e0,0.e0,15.e0,10.e0,-1.e0, 5.e-5, 0.e0,1.e0,0.e0,
  181     i           0.e0,0.e0, 15.e0, 10.e0, -1. e0, 5.e5, -4096.e0,
  182     j           1.e0, 4096.e-6,
  183     k           0.e0,0.e0, 7.e0, 4.e0, 0.e0,0.e0, -.5e0, -.25e0, 0.e0/
  184
  185      DATA d12  /4096.e0/
  186      dtrue(1,1) = 12.e0 / 130.e0
  187      dtrue(2,1) = 36.e0 / 130.e0
  188      dtrue(7,1) = -1.e0 / 6.e0
  189      dtrue(1,2) = 14.e0 / 75.e0
  190      dtrue(2,2) = 49.e0 / 75.e0
  191      dtrue(9,2) = 1.e0 / 7.e0
  192      dtrue(1,5) = 45.e-11 * (d12 * d12)
  193      dtrue(3,5) = 4.e5 / (3.e0 * d12)
  194      dtrue(6,5) = 1.e0 / d12
  195      dtrue(8,5) = 1.e4 / (3.e0 * d12)
  196      dtrue(1,6) = 4.e10 / (1.5e0 * d12 * d12)
  197      dtrue(2,6) = 2.e-2 / 1.5e0
  198      dtrue(8,6) = 5.e-7 * d12
  199      dtrue(1,7) = 4.e0 / 150.e0
  200      dtrue(2,7) = (2.e-10 / 1.5e0) * (d12 * d12)
  201      dtrue(7,7) = -dtrue(6,5)
  202      dtrue(9,7) = 1.e4 / d12
  203      dtrue(1,8) = dtrue(1,7)
  204      dtrue(2,8) = 2.e10 / (1.5e0 * d12 * d12)
  205      dtrue(1,9) = 32.e0 / 7.e0
  206      dtrue(2,9) = -16.e0 / 7.e0
  207
  208
  209
  210
  211
  212      dbtrue(1) = 1.0e0/0.6e0
  213      dbtrue(3) = -1.0e0/0.6e0
  214      dbtrue(5) = 1.0e0/0.6e0
  215
  216      DO 20 k = 1, 8
  217
  218         n = k
  219         IF (icase.EQ.3) THEN
  220
  221            IF (k.GT.8) GO TO 40
  222            sa = da1(k)
  223            sb = db1(k)
  224            CALL srotg(sa,sb,sc,ss)
 
  225            CALL stest1(sa,datrue(k),datrue(k),sfac)
 
  226            CALL stest1(sb,dbtrue(k),dbtrue(k),sfac)
 
  227            CALL stest1(sc,dc1(k),dc1(k),sfac)
 
  228            CALL stest1(ss,ds1(k),ds1(k),sfac)
 
  229         ELSEIF (icase.EQ.11) THEN
  230
  231            DO i=1,4
  232               dtemp(i)= dab(i,k)
  233               dtemp(i+4) = 0.0
  234            END DO
  235            dtemp(9) = 0.0
  236            CALL srotmg(dtemp(1),dtemp(2),dtemp(3),dtemp(4),dtemp(5))
 
  237            CALL stest(9,dtemp,dtrue(1,k),dtrue(1,k),sfac)
 
  238         ELSE
  239            WRITE (nout,*) ' Shouldn''t be here in CHECK0'
  240            stop
  241         END IF
  242   20 CONTINUE
  243   40 RETURN
  244
  245
  246
subroutine stest(len, scomp, strue, ssize, sfac)
subroutine stest1(scomp1, strue1, ssize, sfac)
subroutine srotg(a, b, c, s)
SROTG
subroutine srotmg(sd1, sd2, sx1, sy1, sparam)
SROTMG