1188 COMPLEX*16 zero, half, one
1189 parameter ( zero = ( 0.0d0, 0.0d0 ),
1190 $ half = ( 0.5d0, 0.0d0 ),
1191 $ one = ( 1.0d0, 0.0d0 ) )
1192 DOUBLE PRECISION rzero
1193 parameter ( rzero = 0.0d0 )
1195 DOUBLE PRECISION eps, thresh
1196 INTEGER incmax, nidim, ninc, nkb, nmax, nout, ntra,
1198 LOGICAL fatal, rewi, trace
1201 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ),
1202 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1203 $ xt( nmax ), xx( nmax*incmax ), z( nmax )
1204 DOUBLE PRECISION g( nmax )
1205 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
1208 DOUBLE PRECISION err, errmax
1209 INTEGER i, icd, ict, icu, ik, in, incx, incxs, ix, k,
1210 $ ks, laa, lda, ldas, lx, n, nargs, nc, nk, ns
1211 LOGICAL banded, full, null, packed, reset, same
1212 CHARACTER*1 diag, diags, trans, transs, uplo, uplos
1213 CHARACTER*14 cuplo,ctrans,cdiag
1214 CHARACTER*2 ichd, ichu
1222 EXTERNAL zmake,
zmvch, cztbmv, cztbsv, cztpmv,
1223 $ cztpsv, cztrmv, cztrsv
1227 INTEGER infot, noutc
1230 COMMON /infoc/infot, noutc, ok
1232 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1234 full = sname( 9: 9 ).EQ.
'r'
1235 banded = sname( 9: 9 ).EQ.
'b'
1236 packed = sname( 9: 9 ).EQ.
'p'
1240 ELSE IF( banded )
THEN
1242 ELSE IF( packed )
THEN
1254 DO 110 in = 1, nidim
1280 laa = ( n*( n + 1 ) )/2
1287 uplo = ichu( icu: icu )
1288 IF (uplo.EQ.
'U')
THEN
1289 cuplo =
' CblasUpper'
1291 cuplo =
' CblasLower'
1295 trans = icht( ict: ict )
1296 IF (trans.EQ.
'N')
THEN
1297 ctrans =
' CblasNoTrans'
1298 ELSE IF (trans.EQ.
'T')
THEN
1299 ctrans =
' CblasTrans'
1301 ctrans =
'CblasConjTrans'
1305 diag = ichd( icd: icd )
1306 IF (diag.EQ.
'N')
THEN
1307 cdiag =
' CblasNonUnit'
1309 cdiag =
' CblasUnit'
1315 CALL zmake( sname( 8: 9 ), uplo, diag, n, n, a,
1316 $ nmax, aa, lda, k, k, reset, transl )
1325 CALL zmake(
'ge',
' ',
' ', 1, n, x, 1, xx,
1326 $ abs( incx ), 0, n - 1, reset,
1330 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1353 IF( sname( 10: 11 ).EQ.
'mv' )
THEN
1356 $
WRITE( ntra, fmt = 9993 )nc, sname,
1357 $ cuplo, ctrans, cdiag, n, lda, incx
1360 CALL cztrmv( iorder, uplo, trans, diag,
1361 $ n, aa, lda, xx, incx )
1362 ELSE IF( banded )
THEN
1364 $
WRITE( ntra, fmt = 9994 )nc, sname,
1365 $ cuplo, ctrans, cdiag, n, k, lda, incx
1368 CALL cztbmv( iorder, uplo, trans, diag,
1369 $ n, k, aa, lda, xx, incx )
1370 ELSE IF( packed )
THEN
1372 $
WRITE( ntra, fmt = 9995 )nc, sname,
1373 $ cuplo, ctrans, cdiag, n, incx
1376 CALL cztpmv( iorder, uplo, trans, diag,
1379 ELSE IF( sname( 10: 11 ).EQ.
'sv' )
THEN
1382 $
WRITE( ntra, fmt = 9993 )nc, sname,
1383 $ cuplo, ctrans, cdiag, n, lda, incx
1386 CALL cztrsv( iorder, uplo, trans, diag,
1387 $ n, aa, lda, xx, incx )
1388 ELSE IF( banded )
THEN
1390 $
WRITE( ntra, fmt = 9994 )nc, sname,
1391 $ cuplo, ctrans, cdiag, n, k, lda, incx
1394 CALL cztbsv( iorder, uplo, trans, diag,
1395 $ n, k, aa, lda, xx, incx )
1396 ELSE IF( packed )
THEN
1398 $
WRITE( ntra, fmt = 9995 )nc, sname,
1399 $ cuplo, ctrans, cdiag, n, incx
1402 CALL cztpsv( iorder, uplo, trans, diag,
1410 WRITE( nout, fmt = 9992 )
1417 isame( 1 ) = uplo.EQ.uplos
1418 isame( 2 ) = trans.EQ.transs
1419 isame( 3 ) = diag.EQ.diags
1420 isame( 4 ) = ns.EQ.n
1422 isame( 5 ) =
lze( as, aa, laa )
1423 isame( 6 ) = ldas.EQ.lda
1425 isame( 7 ) =
lze( xs, xx, lx )
1427 isame( 7 ) =
lzeres(
'ge',
' ', 1, n, xs,
1430 isame( 8 ) = incxs.EQ.incx
1431 ELSE IF( banded )
THEN
1432 isame( 5 ) = ks.EQ.k
1433 isame( 6 ) =
lze( as, aa, laa )
1434 isame( 7 ) = ldas.EQ.lda
1436 isame( 8 ) =
lze( xs, xx, lx )
1438 isame( 8 ) =
lzeres(
'ge',
' ', 1, n, xs,
1441 isame( 9 ) = incxs.EQ.incx
1442 ELSE IF( packed )
THEN
1443 isame( 5 ) =
lze( as, aa, laa )
1445 isame( 6 ) =
lze( xs, xx, lx )
1447 isame( 6 ) =
lzeres(
'ge',
' ', 1, n, xs,
1450 isame( 7 ) = incxs.EQ.incx
1458 same = same.AND.isame( i )
1459 IF( .NOT.isame( i ) )
1460 $
WRITE( nout, fmt = 9998 )i
1468 IF( sname( 10: 11 ).EQ.
'mv' )
THEN
1472 CALL zmvch( trans, n, n, one, a, nmax, x,
1473 $ incx, zero, z, incx, xt, g,
1474 $ xx, eps, err, fatal, nout,
1476 ELSE IF( sname( 10: 11 ).EQ.
'sv' )
THEN
1481 z( i ) = xx( 1 + ( i - 1 )*
1483 xx( 1 + ( i - 1 )*abs( incx ) )
1486 CALL zmvch( trans, n, n, one, a, nmax, z,
1487 $ incx, zero, x, incx, xt, g,
1488 $ xx, eps, err, fatal, nout,
1491 errmax = max( errmax, err )
1514 IF( errmax.LT.thresh )
THEN
1515 WRITE( nout, fmt = 9999 )sname, nc
1517 WRITE( nout, fmt = 9997 )sname, nc, errmax
1522 WRITE( nout, fmt = 9996 )sname
1524 WRITE( nout, fmt = 9993 )nc, sname, cuplo, ctrans, cdiag, n,
1526 ELSE IF( banded )
THEN
1527 WRITE( nout, fmt = 9994 )nc, sname, cuplo, ctrans, cdiag, n, k,
1529 ELSE IF( packed )
THEN
1530 WRITE( nout, fmt = 9995 )nc, sname, cuplo, ctrans, cdiag, n,
1537 9999
FORMAT(
' ',a12,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1539 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1540 $
'ANGED INCORRECTLY *******' )
1541 9997
FORMAT(
' ',a12,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1542 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1543 $
' - SUSPECT *******' )
1544 9996
FORMAT(
' ******* ',a12,
' FAILED ON CALL NUMBER:' )
1545 9995
FORMAT(1x, i6,
': ',a12,
'(', 3( a14,
',' ),/ 10x, i3,
', AP, ',
1547 9994
FORMAT(1x, i6,
': ',a12,
'(', 3( a14,
',' ),/ 10x, 2( i3,
',' ),
1548 $
' A,', i3,
', X,', i2,
') .' )
1549 9993
FORMAT( 1x, i6,
': ',a12,
'(', 3( a14,
',' ),/ 10x, i3,
', A,',
1550 $ i3,
', X,', i2,
') .' )
1551 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)