1127 DOUBLE PRECISION zero, half, one
1128 parameter ( zero = 0.0d0, half = 0.5d0, one = 1.0d0 )
1130 DOUBLE PRECISION eps, thresh
1131 INTEGER incmax, nidim, ninc, nkb, nmax, nout, ntra
1132 LOGICAL fatal, rewi, trace
1135 DOUBLE PRECISION a( nmax, nmax ), aa( nmax*nmax ),
1136 $ as( nmax*nmax ), g( nmax ), x( nmax ),
1137 $ xs( nmax*incmax ), xt( nmax ),
1138 $ xx( nmax*incmax ), z( nmax )
1139 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
1141 DOUBLE PRECISION err, errmax, transl
1142 INTEGER i, icd, ict, icu, ik, in, incx, incxs, ix, k,
1143 $ ks, laa, lda, ldas, lx, n, nargs, nc, nk, ns
1144 LOGICAL banded, full, null, packed, reset, same
1145 CHARACTER*1 diag, diags, trans, transs, uplo, uplos
1146 CHARACTER*2 ichd, ichu
1159 INTEGER infot, noutc
1162 COMMON /infoc/infot, noutc, ok, lerr
1164 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1166 full = sname( 3: 3 ).EQ.
'R'
1167 banded = sname( 3: 3 ).EQ.
'B'
1168 packed = sname( 3: 3 ).EQ.
'P'
1172 ELSE IF( banded )
THEN
1174 ELSE IF( packed )
THEN
1186 DO 110 in = 1, nidim
1212 laa = ( n*( n + 1 ) )/2
1219 uplo = ichu( icu: icu )
1222 trans = icht( ict: ict )
1225 diag = ichd( icd: icd )
1230 CALL dmake( sname( 2: 3 ), uplo, diag, n, n, a,
1231 $ nmax, aa, lda, k, k, reset, transl )
1240 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1241 $ abs( incx ), 0, n - 1, reset,
1245 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1268 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1271 $
WRITE( ntra, fmt = 9993 )nc, sname,
1272 $ uplo, trans, diag, n, lda, incx
1275 CALL dtrmv( uplo, trans, diag, n, aa, lda,
1277 ELSE IF( banded )
THEN
1279 $
WRITE( ntra, fmt = 9994 )nc, sname,
1280 $ uplo, trans, diag, n, k, lda, incx
1283 CALL dtbmv( uplo, trans, diag, n, k, aa,
1285 ELSE IF( packed )
THEN
1287 $
WRITE( ntra, fmt = 9995 )nc, sname,
1288 $ uplo, trans, diag, n, incx
1291 CALL dtpmv( uplo, trans, diag, n, aa, xx,
1294 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1297 $
WRITE( ntra, fmt = 9993 )nc, sname,
1298 $ uplo, trans, diag, n, lda, incx
1301 CALL dtrsv( uplo, trans, diag, n, aa, lda,
1303 ELSE IF( banded )
THEN
1305 $
WRITE( ntra, fmt = 9994 )nc, sname,
1306 $ uplo, trans, diag, n, k, lda, incx
1309 CALL dtbsv( uplo, trans, diag, n, k, aa,
1311 ELSE IF( packed )
THEN
1313 $
WRITE( ntra, fmt = 9995 )nc, sname,
1314 $ uplo, trans, diag, n, incx
1317 CALL dtpsv( uplo, trans, diag, n, aa, xx,
1325 WRITE( nout, fmt = 9992 )
1332 isame( 1 ) = uplo.EQ.uplos
1333 isame( 2 ) = trans.EQ.transs
1334 isame( 3 ) = diag.EQ.diags
1335 isame( 4 ) = ns.EQ.n
1337 isame( 5 ) =
lde( as, aa, laa )
1338 isame( 6 ) = ldas.EQ.lda
1340 isame( 7 ) =
lde( xs, xx, lx )
1342 isame( 7 ) =
lderes(
'GE',
' ', 1, n, xs,
1345 isame( 8 ) = incxs.EQ.incx
1346 ELSE IF( banded )
THEN
1347 isame( 5 ) = ks.EQ.k
1348 isame( 6 ) =
lde( as, aa, laa )
1349 isame( 7 ) = ldas.EQ.lda
1351 isame( 8 ) =
lde( xs, xx, lx )
1353 isame( 8 ) =
lderes(
'GE',
' ', 1, n, xs,
1356 isame( 9 ) = incxs.EQ.incx
1357 ELSE IF( packed )
THEN
1358 isame( 5 ) =
lde( as, aa, laa )
1360 isame( 6 ) =
lde( xs, xx, lx )
1362 isame( 6 ) =
lderes(
'GE',
' ', 1, n, xs,
1365 isame( 7 ) = incxs.EQ.incx
1373 same = same.AND.isame( i )
1374 IF( .NOT.isame( i ) )
1375 $
WRITE( nout, fmt = 9998 )i
1383 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1387 CALL dmvch( trans, n, n, one, a, nmax, x,
1388 $ incx, zero, z, incx, xt, g,
1389 $ xx, eps, err, fatal, nout,
1391 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1396 z( i ) = xx( 1 + ( i - 1 )*
1398 xx( 1 + ( i - 1 )*abs( incx ) )
1401 CALL dmvch( trans, n, n, one, a, nmax, z,
1402 $ incx, zero, x, incx, xt, g,
1403 $ xx, eps, err, fatal, nout,
1406 errmax = max( errmax, err )
1429 IF( errmax.LT.thresh )
THEN
1430 WRITE( nout, fmt = 9999 )sname, nc
1432 WRITE( nout, fmt = 9997 )sname, nc, errmax
1437 WRITE( nout, fmt = 9996 )sname
1439 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1441 ELSE IF( banded )
THEN
1442 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1444 ELSE IF( packed )
THEN
1445 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1451 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1453 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1454 $
'ANGED INCORRECTLY *******' )
1455 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1456 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1457 $
' - SUSPECT *******' )
1458 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1459 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1461 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1462 $
' A,', i3,
', X,', i2,
') .' )
1463 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1464 $ i3,
', X,', i2,
') .' )
1465 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dtbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBSV
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lde(RI, RJ, LR)
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV
subroutine dmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine dtbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBMV
subroutine dtrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRMV
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV
subroutine dtrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRSV
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)