1189 DOUBLE PRECISION zero, half, one
1190 parameter ( zero = 0.0d0, half = 0.5d0, one = 1.0d0 )
1192 DOUBLE PRECISION eps, thresh
1193 INTEGER incmax, nidim, ninc, nkb, nmax, nout, ntra,
1195 LOGICAL fatal, rewi, trace
1198 DOUBLE PRECISION a( nmax, nmax ), aa( nmax*nmax ),
1199 $ as( nmax*nmax ), g( nmax ), x( nmax ),
1200 $ xs( nmax*incmax ), xt( nmax ),
1201 $ xx( nmax*incmax ), z( nmax )
1202 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
1204 DOUBLE PRECISION err, errmax, transl
1205 INTEGER i, icd, ict, icu, ik, in, incx, incxs, ix, k,
1206 $ ks, laa, lda, ldas, lx, n, nargs, nc, nk, ns
1207 LOGICAL banded, full, null, packed, reset, same
1208 CHARACTER*1 diag, diags, trans, transs, uplo, uplos
1209 CHARACTER*14 cuplo,ctrans,cdiag
1210 CHARACTER*2 ichd, ichu
1218 EXTERNAL dmake,
dmvch, cdtbmv, cdtbsv, cdtpmv,
1219 $ cdtpsv, cdtrmv, cdtrsv
1223 INTEGER infot, noutc
1226 COMMON /infoc/infot, noutc, ok
1228 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1230 full = sname( 9: 9 ).EQ.
'r'
1231 banded = sname( 9: 9 ).EQ.
'b'
1232 packed = sname( 9: 9 ).EQ.
'p'
1236 ELSE IF( banded )
THEN
1238 ELSE IF( packed )
THEN
1250 DO 110 in = 1, nidim
1276 laa = ( n*( n + 1 ) )/2
1283 uplo = ichu( icu: icu )
1284 IF (uplo.EQ.
'U')
THEN
1285 cuplo =
' CblasUpper'
1287 cuplo =
' CblasLower'
1291 trans = icht( ict: ict )
1292 IF (trans.EQ.
'N')
THEN
1293 ctrans =
' CblasNoTrans'
1294 ELSE IF (trans.EQ.
'T')
THEN
1295 ctrans =
' CblasTrans'
1297 ctrans =
'CblasConjTrans'
1301 diag = ichd( icd: icd )
1302 IF (diag.EQ.
'N')
THEN
1303 cdiag =
' CblasNonUnit'
1305 cdiag =
' CblasUnit'
1311 CALL dmake( sname( 8: 9 ), uplo, diag, n, n, a,
1312 $ nmax, aa, lda, k, k, reset, transl )
1321 CALL dmake(
'ge',
' ',
' ', 1, n, x, 1, xx,
1322 $ abs( incx ), 0, n - 1, reset,
1326 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1349 IF( sname( 10: 11 ).EQ.
'mv' )
THEN
1352 $
WRITE( ntra, fmt = 9993 )nc, sname,
1353 $ cuplo, ctrans, cdiag, n, lda, incx
1356 CALL cdtrmv( iorder, uplo, trans, diag,
1357 $ n, aa, lda, xx, incx )
1358 ELSE IF( banded )
THEN
1360 $
WRITE( ntra, fmt = 9994 )nc, sname,
1361 $ cuplo, ctrans, cdiag, n, k, lda, incx
1364 CALL cdtbmv( iorder, uplo, trans, diag,
1365 $ n, k, aa, lda, xx, incx )
1366 ELSE IF( packed )
THEN
1368 $
WRITE( ntra, fmt = 9995 )nc, sname,
1369 $ cuplo, ctrans, cdiag, n, incx
1372 CALL cdtpmv( iorder, uplo, trans, diag,
1375 ELSE IF( sname( 10: 11 ).EQ.
'sv' )
THEN
1378 $
WRITE( ntra, fmt = 9993 )nc, sname,
1379 $ cuplo, ctrans, cdiag, n, lda, incx
1382 CALL cdtrsv( iorder, uplo, trans, diag,
1383 $ n, aa, lda, xx, incx )
1384 ELSE IF( banded )
THEN
1386 $
WRITE( ntra, fmt = 9994 )nc, sname,
1387 $ cuplo, ctrans, cdiag, n, k, lda, incx
1390 CALL cdtbsv( iorder, uplo, trans, diag,
1391 $ n, k, aa, lda, xx, incx )
1392 ELSE IF( packed )
THEN
1394 $
WRITE( ntra, fmt = 9995 )nc, sname,
1395 $ cuplo, ctrans, cdiag, n, incx
1398 CALL cdtpsv( iorder, uplo, trans, diag,
1406 WRITE( nout, fmt = 9992 )
1413 isame( 1 ) = uplo.EQ.uplos
1414 isame( 2 ) = trans.EQ.transs
1415 isame( 3 ) = diag.EQ.diags
1416 isame( 4 ) = ns.EQ.n
1418 isame( 5 ) =
lde( as, aa, laa )
1419 isame( 6 ) = ldas.EQ.lda
1421 isame( 7 ) =
lde( xs, xx, lx )
1423 isame( 7 ) =
lderes(
'ge',
' ', 1, n, xs,
1426 isame( 8 ) = incxs.EQ.incx
1427 ELSE IF( banded )
THEN
1428 isame( 5 ) = ks.EQ.k
1429 isame( 6 ) =
lde( as, aa, laa )
1430 isame( 7 ) = ldas.EQ.lda
1432 isame( 8 ) =
lde( xs, xx, lx )
1434 isame( 8 ) =
lderes(
'ge',
' ', 1, n, xs,
1437 isame( 9 ) = incxs.EQ.incx
1438 ELSE IF( packed )
THEN
1439 isame( 5 ) =
lde( as, aa, laa )
1441 isame( 6 ) =
lde( xs, xx, lx )
1443 isame( 6 ) =
lderes(
'ge',
' ', 1, n, xs,
1446 isame( 7 ) = incxs.EQ.incx
1454 same = same.AND.isame( i )
1455 IF( .NOT.isame( i ) )
1456 $
WRITE( nout, fmt = 9998 )i
1464 IF( sname( 10: 11 ).EQ.
'mv' )
THEN
1468 CALL dmvch( trans, n, n, one, a, nmax, x,
1469 $ incx, zero, z, incx, xt, g,
1470 $ xx, eps, err, fatal, nout,
1472 ELSE IF( sname( 10: 11 ).EQ.
'sv' )
THEN
1477 z( i ) = xx( 1 + ( i - 1 )*
1479 xx( 1 + ( i - 1 )*abs( incx ) )
1482 CALL dmvch( trans, n, n, one, a, nmax, z,
1483 $ incx, zero, x, incx, xt, g,
1484 $ xx, eps, err, fatal, nout,
1487 errmax = max( errmax, err )
1510 IF( errmax.LT.thresh )
THEN
1511 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
1512 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
1514 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
1515 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
1520 WRITE( nout, fmt = 9996 )sname
1522 WRITE( nout, fmt = 9993 )nc, sname, cuplo, ctrans, cdiag, n,
1524 ELSE IF( banded )
THEN
1525 WRITE( nout, fmt = 9994 )nc, sname, cuplo, ctrans, cdiag, n, k,
1527 ELSE IF( packed )
THEN
1528 WRITE( nout, fmt = 9995 )nc, sname, cuplo, ctrans, cdiag, n,
1535 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1536 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1537 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1538 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1539 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1540 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1541 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1542 $
' (', i6,
' CALL',
'S)' )
1543 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1544 $
' (', i6,
' CALL',
'S)' )
1545 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1546 $
'ANGED INCORRECTLY *******' )
1547 9997
FORMAT(
' ',a12,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1548 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1549 $
' - SUSPECT *******' )
1550 9996
FORMAT(
' ******* ',a12,
' FAILED ON CALL NUMBER:' )
1551 9995
FORMAT( 1x, i6,
': ',a12,
'(', 3( a14,
',' ),/ 10x, i3,
', AP, ',
1553 9994
FORMAT( 1x, i6,
': ',a12,
'(', 3( a14,
',' ),/ 10x, 2( i3,
',' ),
1554 $
' A,', i3,
', X,', i2,
') .' )
1555 9993
FORMAT( 1x, i6,
': ',a12,
'(', 3( a14,
',' ),/ 10x, i3,
', A,',
1556 $ i3,
', X,', i2,
') .' )
1557 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)
subroutine dmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)