1146 COMPLEX*16 zero, half, one
1147 parameter ( zero = ( 0.0d0, 0.0d0 ),
1148 $ half = ( 0.5d0, 0.0d0 ),
1149 $ one = ( 1.0d0, 0.0d0 ) )
1150 DOUBLE PRECISION rzero
1151 parameter ( rzero = 0.0d0 )
1153 DOUBLE PRECISION eps, thresh
1154 INTEGER incmax, nidim, ninc, nkb, nmax, nout, ntra
1155 LOGICAL fatal, rewi, trace
1158 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ),
1159 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1160 $ xt( nmax ), xx( nmax*incmax ), z( nmax )
1161 DOUBLE PRECISION g( nmax )
1162 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
1165 DOUBLE PRECISION err, errmax
1166 INTEGER i, icd, ict, icu, ik, in, incx, incxs, ix, k,
1167 $ ks, laa, lda, ldas, lx, n, nargs, nc, nk, ns
1168 LOGICAL banded, full, null, packed, reset, same
1169 CHARACTER*1 diag, diags, trans, transs, uplo, uplos
1170 CHARACTER*2 ichd, ichu
1183 INTEGER infot, noutc
1186 COMMON /infoc/infot, noutc, ok, lerr
1188 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1190 full = sname( 3: 3 ).EQ.
'R'
1191 banded = sname( 3: 3 ).EQ.
'B'
1192 packed = sname( 3: 3 ).EQ.
'P'
1196 ELSE IF( banded )
THEN
1198 ELSE IF( packed )
THEN
1210 DO 110 in = 1, nidim
1236 laa = ( n*( n + 1 ) )/2
1243 uplo = ichu( icu: icu )
1246 trans = icht( ict: ict )
1249 diag = ichd( icd: icd )
1254 CALL zmake( sname( 2: 3 ), uplo, diag, n, n, a,
1255 $ nmax, aa, lda, k, k, reset, transl )
1264 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1265 $ abs( incx ), 0, n - 1, reset,
1269 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1292 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1295 $
WRITE( ntra, fmt = 9993 )nc, sname,
1296 $ uplo, trans, diag, n, lda, incx
1299 CALL ztrmv( uplo, trans, diag, n, aa, lda,
1301 ELSE IF( banded )
THEN
1303 $
WRITE( ntra, fmt = 9994 )nc, sname,
1304 $ uplo, trans, diag, n, k, lda, incx
1307 CALL ztbmv( uplo, trans, diag, n, k, aa,
1309 ELSE IF( packed )
THEN
1311 $
WRITE( ntra, fmt = 9995 )nc, sname,
1312 $ uplo, trans, diag, n, incx
1315 CALL ztpmv( uplo, trans, diag, n, aa, xx,
1318 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1321 $
WRITE( ntra, fmt = 9993 )nc, sname,
1322 $ uplo, trans, diag, n, lda, incx
1325 CALL ztrsv( uplo, trans, diag, n, aa, lda,
1327 ELSE IF( banded )
THEN
1329 $
WRITE( ntra, fmt = 9994 )nc, sname,
1330 $ uplo, trans, diag, n, k, lda, incx
1333 CALL ztbsv( uplo, trans, diag, n, k, aa,
1335 ELSE IF( packed )
THEN
1337 $
WRITE( ntra, fmt = 9995 )nc, sname,
1338 $ uplo, trans, diag, n, incx
1341 CALL ztpsv( uplo, trans, diag, n, aa, xx,
1349 WRITE( nout, fmt = 9992 )
1356 isame( 1 ) = uplo.EQ.uplos
1357 isame( 2 ) = trans.EQ.transs
1358 isame( 3 ) = diag.EQ.diags
1359 isame( 4 ) = ns.EQ.n
1361 isame( 5 ) =
lze( as, aa, laa )
1362 isame( 6 ) = ldas.EQ.lda
1364 isame( 7 ) =
lze( xs, xx, lx )
1366 isame( 7 ) =
lzeres(
'GE',
' ', 1, n, xs,
1369 isame( 8 ) = incxs.EQ.incx
1370 ELSE IF( banded )
THEN
1371 isame( 5 ) = ks.EQ.k
1372 isame( 6 ) =
lze( as, aa, laa )
1373 isame( 7 ) = ldas.EQ.lda
1375 isame( 8 ) =
lze( xs, xx, lx )
1377 isame( 8 ) =
lzeres(
'GE',
' ', 1, n, xs,
1380 isame( 9 ) = incxs.EQ.incx
1381 ELSE IF( packed )
THEN
1382 isame( 5 ) =
lze( as, aa, laa )
1384 isame( 6 ) =
lze( xs, xx, lx )
1386 isame( 6 ) =
lzeres(
'GE',
' ', 1, n, xs,
1389 isame( 7 ) = incxs.EQ.incx
1397 same = same.AND.isame( i )
1398 IF( .NOT.isame( i ) )
1399 $
WRITE( nout, fmt = 9998 )i
1407 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1411 CALL zmvch( trans, n, n, one, a, nmax, x,
1412 $ incx, zero, z, incx, xt, g,
1413 $ xx, eps, err, fatal, nout,
1415 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1420 z( i ) = xx( 1 + ( i - 1 )*
1422 xx( 1 + ( i - 1 )*abs( incx ) )
1425 CALL zmvch( trans, n, n, one, a, nmax, z,
1426 $ incx, zero, x, incx, xt, g,
1427 $ xx, eps, err, fatal, nout,
1430 errmax = max( errmax, err )
1453 IF( errmax.LT.thresh )
THEN
1454 WRITE( nout, fmt = 9999 )sname, nc
1456 WRITE( nout, fmt = 9997 )sname, nc, errmax
1461 WRITE( nout, fmt = 9996 )sname
1463 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1465 ELSE IF( banded )
THEN
1466 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1468 ELSE IF( packed )
THEN
1469 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1475 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1477 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1478 $
'ANGED INCORRECTLY *******' )
1479 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1480 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1481 $
' - SUSPECT *******' )
1482 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1483 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1485 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1486 $
' A,', i3,
', X,', i2,
') .' )
1487 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1488 $ i3,
', X,', i2,
') .' )
1489 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine ztrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRSV
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)
subroutine ztbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBMV
subroutine ztpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPSV
subroutine ztpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPMV
logical function lze(RI, RJ, LR)
subroutine ztbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBSV
subroutine ztrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRMV
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)