1143 COMPLEX*16 ZERO, HALF, ONE
1144 parameter( zero = ( 0.0d0, 0.0d0 ),
1145 $ half = ( 0.5d0, 0.0d0 ),
1146 $ one = ( 1.0d0, 0.0d0 ) )
1147 DOUBLE PRECISION RZERO
1148 parameter( rzero = 0.0d0 )
1150 DOUBLE PRECISION EPS, THRESH
1151 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1152 LOGICAL FATAL, REWI, TRACE
1155 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ),
1156 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1157 $ XT( NMAX ), XX( NMAX*INCMAX ), Z( NMAX )
1158 DOUBLE PRECISION G( NMAX )
1159 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1162 DOUBLE PRECISION ERR, ERRMAX
1163 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1164 $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS
1165 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1166 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1167 CHARACTER*2 ICHD, ICHU
1180 INTEGER INFOT, NOUTC
1183 COMMON /infoc/infot, noutc, ok, lerr
1185 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1187 full = sname( 3: 3 ).EQ.
'R'
1188 banded = sname( 3: 3 ).EQ.
'B'
1189 packed = sname( 3: 3 ).EQ.
'P'
1193 ELSE IF( banded )
THEN
1195 ELSE IF( packed )
THEN
1207 DO 110 in = 1, nidim
1233 laa = ( n*( n + 1 ) )/2
1240 uplo = ichu( icu: icu )
1243 trans = icht( ict: ict )
1246 diag = ichd( icd: icd )
1251 CALL zmake( sname( 2: 3 ), uplo, diag, n, n, a,
1252 $ nmax, aa, lda, k, k, reset, transl )
1261 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1262 $ abs( incx ), 0, n - 1, reset,
1266 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1289 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1292 $
WRITE( ntra, fmt = 9993 )nc, sname,
1293 $ uplo, trans, diag, n, lda, incx
1296 CALL ztrmv( uplo, trans, diag, n, aa, lda,
1298 ELSE IF( banded )
THEN
1300 $
WRITE( ntra, fmt = 9994 )nc, sname,
1301 $ uplo, trans, diag, n, k, lda, incx
1304 CALL ztbmv( uplo, trans, diag, n, k, aa,
1306 ELSE IF( packed )
THEN
1308 $
WRITE( ntra, fmt = 9995 )nc, sname,
1309 $ uplo, trans, diag, n, incx
1312 CALL ztpmv( uplo, trans, diag, n, aa, xx,
1315 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1318 $
WRITE( ntra, fmt = 9993 )nc, sname,
1319 $ uplo, trans, diag, n, lda, incx
1322 CALL ztrsv( uplo, trans, diag, n, aa, lda,
1324 ELSE IF( banded )
THEN
1326 $
WRITE( ntra, fmt = 9994 )nc, sname,
1327 $ uplo, trans, diag, n, k, lda, incx
1330 CALL ztbsv( uplo, trans, diag, n, k, aa,
1332 ELSE IF( packed )
THEN
1334 $
WRITE( ntra, fmt = 9995 )nc, sname,
1335 $ uplo, trans, diag, n, incx
1338 CALL ztpsv( uplo, trans, diag, n, aa, xx,
1346 WRITE( nout, fmt = 9992 )
1353 isame( 1 ) = uplo.EQ.uplos
1354 isame( 2 ) = trans.EQ.transs
1355 isame( 3 ) = diag.EQ.diags
1356 isame( 4 ) = ns.EQ.n
1358 isame( 5 ) =
lze( as, aa, laa )
1359 isame( 6 ) = ldas.EQ.lda
1361 isame( 7 ) =
lze( xs, xx, lx )
1363 isame( 7 ) =
lzeres(
'GE',
' ', 1, n, xs,
1366 isame( 8 ) = incxs.EQ.incx
1367 ELSE IF( banded )
THEN
1368 isame( 5 ) = ks.EQ.k
1369 isame( 6 ) =
lze( as, aa, laa )
1370 isame( 7 ) = ldas.EQ.lda
1372 isame( 8 ) =
lze( xs, xx, lx )
1374 isame( 8 ) =
lzeres(
'GE',
' ', 1, n, xs,
1377 isame( 9 ) = incxs.EQ.incx
1378 ELSE IF( packed )
THEN
1379 isame( 5 ) =
lze( as, aa, laa )
1381 isame( 6 ) =
lze( xs, xx, lx )
1383 isame( 6 ) =
lzeres(
'GE',
' ', 1, n, xs,
1386 isame( 7 ) = incxs.EQ.incx
1394 same = same.AND.isame( i )
1395 IF( .NOT.isame( i ) )
1396 $
WRITE( nout, fmt = 9998 )i
1404 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1408 CALL zmvch( trans, n, n, one, a, nmax, x,
1409 $ incx, zero, z, incx, xt, g,
1410 $ xx, eps, err, fatal, nout,
1412 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1417 z( i ) = xx( 1 + ( i - 1 )*
1419 xx( 1 + ( i - 1 )*abs( incx ) )
1422 CALL zmvch( trans, n, n, one, a, nmax, z,
1423 $ incx, zero, x, incx, xt, g,
1424 $ xx, eps, err, fatal, nout,
1427 errmax = max( errmax, err )
1450 IF( errmax.LT.thresh )
THEN
1451 WRITE( nout, fmt = 9999 )sname, nc
1453 WRITE( nout, fmt = 9997 )sname, nc, errmax
1458 WRITE( nout, fmt = 9996 )sname
1460 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1462 ELSE IF( banded )
THEN
1463 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1465 ELSE IF( packed )
THEN
1466 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1472 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1474 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1475 $
'ANGED INCORRECTLY *******' )
1476 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1477 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1478 $
' - SUSPECT *******' )
1479 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1480 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1482 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1483 $
' A,', i3,
', X,', i2,
') .' )
1484 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1485 $ i3,
', X,', i2,
') .' )
1486 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine ztbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBSV
subroutine ztbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBMV
subroutine ztrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRMV
subroutine ztpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPSV
subroutine ztrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRSV
subroutine ztpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPMV
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
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)