1124 DOUBLE PRECISION ZERO, HALF, ONE
1125 parameter( zero = 0.0d0, half = 0.5d0, one = 1.0d0 )
1127 DOUBLE PRECISION EPS, THRESH
1128 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1129 LOGICAL FATAL, REWI, TRACE
1132 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ),
1133 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1134 $ XS( NMAX*INCMAX ), XT( NMAX ),
1135 $ XX( NMAX*INCMAX ), Z( NMAX )
1136 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1138 DOUBLE PRECISION ERR, ERRMAX, TRANSL
1139 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1140 $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS
1141 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1142 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1143 CHARACTER*2 ICHD, ICHU
1156 INTEGER INFOT, NOUTC
1159 COMMON /infoc/infot, noutc, ok, lerr
1161 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1163 full = sname( 3: 3 ).EQ.
'R'
1164 banded = sname( 3: 3 ).EQ.
'B'
1165 packed = sname( 3: 3 ).EQ.
'P'
1169 ELSE IF( banded )
THEN
1171 ELSE IF( packed )
THEN
1183 DO 110 in = 1, nidim
1209 laa = ( n*( n + 1 ) )/2
1216 uplo = ichu( icu: icu )
1219 trans = icht( ict: ict )
1222 diag = ichd( icd: icd )
1227 CALL dmake( sname( 2: 3 ), uplo, diag, n, n, a,
1228 $ nmax, aa, lda, k, k, reset, transl )
1237 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1238 $ abs( incx ), 0, n - 1, reset,
1242 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1265 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1268 $
WRITE( ntra, fmt = 9993 )nc, sname,
1269 $ uplo, trans, diag, n, lda, incx
1272 CALL dtrmv( uplo, trans, diag, n, aa, lda,
1274 ELSE IF( banded )
THEN
1276 $
WRITE( ntra, fmt = 9994 )nc, sname,
1277 $ uplo, trans, diag, n, k, lda, incx
1280 CALL dtbmv( uplo, trans, diag, n, k, aa,
1282 ELSE IF( packed )
THEN
1284 $
WRITE( ntra, fmt = 9995 )nc, sname,
1285 $ uplo, trans, diag, n, incx
1288 CALL dtpmv( uplo, trans, diag, n, aa, xx,
1291 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1294 $
WRITE( ntra, fmt = 9993 )nc, sname,
1295 $ uplo, trans, diag, n, lda, incx
1298 CALL dtrsv( uplo, trans, diag, n, aa, lda,
1300 ELSE IF( banded )
THEN
1302 $
WRITE( ntra, fmt = 9994 )nc, sname,
1303 $ uplo, trans, diag, n, k, lda, incx
1306 CALL dtbsv( uplo, trans, diag, n, k, aa,
1308 ELSE IF( packed )
THEN
1310 $
WRITE( ntra, fmt = 9995 )nc, sname,
1311 $ uplo, trans, diag, n, incx
1314 CALL dtpsv( uplo, trans, diag, n, aa, xx,
1322 WRITE( nout, fmt = 9992 )
1329 isame( 1 ) = uplo.EQ.uplos
1330 isame( 2 ) = trans.EQ.transs
1331 isame( 3 ) = diag.EQ.diags
1332 isame( 4 ) = ns.EQ.n
1334 isame( 5 ) =
lde( as, aa, laa )
1335 isame( 6 ) = ldas.EQ.lda
1337 isame( 7 ) =
lde( xs, xx, lx )
1339 isame( 7 ) =
lderes(
'GE',
' ', 1, n, xs,
1342 isame( 8 ) = incxs.EQ.incx
1343 ELSE IF( banded )
THEN
1344 isame( 5 ) = ks.EQ.k
1345 isame( 6 ) =
lde( as, aa, laa )
1346 isame( 7 ) = ldas.EQ.lda
1348 isame( 8 ) =
lde( xs, xx, lx )
1350 isame( 8 ) =
lderes(
'GE',
' ', 1, n, xs,
1353 isame( 9 ) = incxs.EQ.incx
1354 ELSE IF( packed )
THEN
1355 isame( 5 ) =
lde( as, aa, laa )
1357 isame( 6 ) =
lde( xs, xx, lx )
1359 isame( 6 ) =
lderes(
'GE',
' ', 1, n, xs,
1362 isame( 7 ) = incxs.EQ.incx
1370 same = same.AND.isame( i )
1371 IF( .NOT.isame( i ) )
1372 $
WRITE( nout, fmt = 9998 )i
1380 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1384 CALL dmvch( trans, n, n, one, a, nmax, x,
1385 $ incx, zero, z, incx, xt, g,
1386 $ xx, eps, err, fatal, nout,
1388 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1393 z( i ) = xx( 1 + ( i - 1 )*
1395 xx( 1 + ( i - 1 )*abs( incx ) )
1398 CALL dmvch( trans, n, n, one, a, nmax, z,
1399 $ incx, zero, x, incx, xt, g,
1400 $ xx, eps, err, fatal, nout,
1403 errmax = max( errmax, err )
1426 IF( errmax.LT.thresh )
THEN
1427 WRITE( nout, fmt = 9999 )sname, nc
1429 WRITE( nout, fmt = 9997 )sname, nc, errmax
1434 WRITE( nout, fmt = 9996 )sname
1436 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1438 ELSE IF( banded )
THEN
1439 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1441 ELSE IF( packed )
THEN
1442 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1448 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1450 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1451 $
'ANGED INCORRECTLY *******' )
1452 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1453 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1454 $
' - SUSPECT *******' )
1455 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1456 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1458 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1459 $
' A,', i3,
', X,', i2,
') .' )
1460 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1461 $ i3,
', X,', i2,
') .' )
1462 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 dtrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRSV
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV
subroutine dtrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRMV
subroutine dtbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBSV
subroutine dtbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBMV