1124 REAL ZERO, HALF, ONE
1125 parameter( zero = 0.0, half = 0.5, one = 1.0 )
1128 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1129 LOGICAL FATAL, REWI, TRACE
1132 REAL 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 REAL 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 smake( sname( 2: 3 ), uplo, diag, n, n, a,
1228 $ nmax, aa, lda, k, k, reset, transl )
1237 CALL smake(
'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 strmv( 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 stbmv( 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 stpmv( 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 strsv( 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 stbsv( 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 stpsv( 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 ) =
lse( as, aa, laa )
1335 isame( 6 ) = ldas.EQ.lda
1337 isame( 7 ) =
lse( xs, xx, lx )
1339 isame( 7 ) =
lseres(
'GE',
' ', 1, n, xs,
1342 isame( 8 ) = incxs.EQ.incx
1343 ELSE IF( banded )
THEN
1344 isame( 5 ) = ks.EQ.k
1345 isame( 6 ) =
lse( as, aa, laa )
1346 isame( 7 ) = ldas.EQ.lda
1348 isame( 8 ) =
lse( xs, xx, lx )
1350 isame( 8 ) =
lseres(
'GE',
' ', 1, n, xs,
1353 isame( 9 ) = incxs.EQ.incx
1354 ELSE IF( packed )
THEN
1355 isame( 5 ) =
lse( as, aa, laa )
1357 isame( 6 ) =
lse( xs, xx, lx )
1359 isame( 6 ) =
lseres(
'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 smvch( 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 smvch( 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 stbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
STBSV
subroutine strmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
STRMV
subroutine strsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
STRSV
subroutine stpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPMV
subroutine stbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
STBMV
subroutine stpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPSV
logical function lse(RI, RJ, LR)
subroutine smvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
logical function lseres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine smake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)