2021 DOUBLE PRECISION ZERO, HALF, ONE
2022 parameter( zero = 0.0d0, half = 0.5d0, one = 1.0d0 )
2024 DOUBLE PRECISION EPS, THRESH
2025 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2026 LOGICAL FATAL, REWI, TRACE
2029 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2030 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
2031 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
2032 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
2033 $ YY( NMAX*INCMAX ), Z( NMAX, 2 )
2034 INTEGER IDIM( NIDIM ), INC( NINC )
2036 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
2037 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2038 $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N,
2040 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2041 CHARACTER*1 UPLO, UPLOS
2044 DOUBLE PRECISION W( 2 )
2054 INTEGER INFOT, NOUTC
2057 COMMON /infoc/infot, noutc, ok, lerr
2061 full = sname( 3: 3 ).EQ.
'Y'
2062 packed = sname( 3: 3 ).EQ.
'P'
2066 ELSE IF( packed )
THEN
2074 DO 140 in = 1, nidim
2084 laa = ( n*( n + 1 ) )/2
2090 uplo = ich( ic: ic )
2100 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2101 $ 0, n - 1, reset, transl )
2104 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2114 CALL dmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2115 $ abs( incy ), 0, n - 1, reset, transl )
2118 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2123 null = n.LE.0.OR.alpha.EQ.zero
2128 CALL dmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2129 $ nmax, aa, lda, n - 1, n - 1, reset,
2156 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2157 $ alpha, incx, incy, lda
2160 CALL dsyr2( uplo, n, alpha, xx, incx, yy, incy,
2162 ELSE IF( packed )
THEN
2164 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2168 CALL dspr2( uplo, n, alpha, xx, incx, yy, incy,
2175 WRITE( nout, fmt = 9992 )
2182 isame( 1 ) = uplo.EQ.uplos
2183 isame( 2 ) = ns.EQ.n
2184 isame( 3 ) = als.EQ.alpha
2185 isame( 4 ) =
lde( xs, xx, lx )
2186 isame( 5 ) = incxs.EQ.incx
2187 isame( 6 ) =
lde( ys, yy, ly )
2188 isame( 7 ) = incys.EQ.incy
2190 isame( 8 ) =
lde( as, aa, laa )
2192 isame( 8 ) =
lderes( sname( 2: 3 ), uplo, n, n,
2195 IF( .NOT.packed )
THEN
2196 isame( 9 ) = ldas.EQ.lda
2203 same = same.AND.isame( i )
2204 IF( .NOT.isame( i ) )
2205 $
WRITE( nout, fmt = 9998 )i
2222 z( i, 1 ) = x( n - i + 1 )
2231 z( i, 2 ) = y( n - i + 1 )
2245 CALL dmvch(
'N', lj, 2, alpha, z( jj, 1 ),
2246 $ nmax, w, 1, one, a( jj, j ), 1,
2247 $ yt, g, aa( ja ), eps, err, fatal,
2258 errmax = max( errmax, err )
2281 IF( errmax.LT.thresh )
THEN
2282 WRITE( nout, fmt = 9999 )sname, nc
2284 WRITE( nout, fmt = 9997 )sname, nc, errmax
2289 WRITE( nout, fmt = 9995 )j
2292 WRITE( nout, fmt = 9996 )sname
2294 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2296 ELSE IF( packed )
THEN
2297 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2303 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2305 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2306 $
'ANGED INCORRECTLY *******' )
2307 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2308 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2309 $
' - SUSPECT *******' )
2310 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2311 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2312 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2313 $ i2,
', Y,', i2,
', AP) .' )
2314 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2315 $ i2,
', Y,', i2,
', A,', i3,
') .' )
2316 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lde(RI, RJ, LR)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine dmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine dspr2(UPLO, N, ALPHA, X, INCX, Y, INCY, AP)
DSPR2
subroutine dsyr2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DSYR2