1140 COMPLEX ZERO, HALF, ONE
1141 parameter( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ),
1142 $ one = ( 1.0, 0.0 ) )
1144 parameter( rzero = 0.0 )
1147 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1148 LOGICAL FATAL, REWI, TRACE
1151 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ),
1152 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1153 $ XT( NMAX ), XX( NMAX*INCMAX ), Z( NMAX )
1155 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1159 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1160 $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS
1161 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1162 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1163 CHARACTER*2 ICHD, ICHU
1176 INTEGER INFOT, NOUTC
1179 COMMON /infoc/infot, noutc, ok, lerr
1181 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1183 full = sname( 3: 3 ).EQ.
'R'
1184 banded = sname( 3: 3 ).EQ.
'B'
1185 packed = sname( 3: 3 ).EQ.
'P'
1189 ELSE IF( banded )
THEN
1191 ELSE IF( packed )
THEN
1203 DO 110 in = 1, nidim
1229 laa = ( n*( n + 1 ) )/2
1236 uplo = ichu( icu: icu )
1239 trans = icht( ict: ict )
1242 diag = ichd( icd: icd )
1247 CALL cmake( sname( 2: 3 ), uplo, diag, n, n, a,
1248 $ nmax, aa, lda, k, k, reset, transl )
1257 CALL cmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1258 $ abs( incx ), 0, n - 1, reset,
1262 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1285 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1288 $
WRITE( ntra, fmt = 9993 )nc, sname,
1289 $ uplo, trans, diag, n, lda, incx
1292 CALL ctrmv( uplo, trans, diag, n, aa, lda,
1294 ELSE IF( banded )
THEN
1296 $
WRITE( ntra, fmt = 9994 )nc, sname,
1297 $ uplo, trans, diag, n, k, lda, incx
1300 CALL ctbmv( uplo, trans, diag, n, k, aa,
1302 ELSE IF( packed )
THEN
1304 $
WRITE( ntra, fmt = 9995 )nc, sname,
1305 $ uplo, trans, diag, n, incx
1308 CALL ctpmv( uplo, trans, diag, n, aa, xx,
1311 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1314 $
WRITE( ntra, fmt = 9993 )nc, sname,
1315 $ uplo, trans, diag, n, lda, incx
1318 CALL ctrsv( uplo, trans, diag, n, aa, lda,
1320 ELSE IF( banded )
THEN
1322 $
WRITE( ntra, fmt = 9994 )nc, sname,
1323 $ uplo, trans, diag, n, k, lda, incx
1326 CALL ctbsv( uplo, trans, diag, n, k, aa,
1328 ELSE IF( packed )
THEN
1330 $
WRITE( ntra, fmt = 9995 )nc, sname,
1331 $ uplo, trans, diag, n, incx
1334 CALL ctpsv( uplo, trans, diag, n, aa, xx,
1342 WRITE( nout, fmt = 9992 )
1349 isame( 1 ) = uplo.EQ.uplos
1350 isame( 2 ) = trans.EQ.transs
1351 isame( 3 ) = diag.EQ.diags
1352 isame( 4 ) = ns.EQ.n
1354 isame( 5 ) =
lce( as, aa, laa )
1355 isame( 6 ) = ldas.EQ.lda
1357 isame( 7 ) =
lce( xs, xx, lx )
1359 isame( 7 ) =
lceres(
'GE',
' ', 1, n, xs,
1362 isame( 8 ) = incxs.EQ.incx
1363 ELSE IF( banded )
THEN
1364 isame( 5 ) = ks.EQ.k
1365 isame( 6 ) =
lce( as, aa, laa )
1366 isame( 7 ) = ldas.EQ.lda
1368 isame( 8 ) =
lce( xs, xx, lx )
1370 isame( 8 ) =
lceres(
'GE',
' ', 1, n, xs,
1373 isame( 9 ) = incxs.EQ.incx
1374 ELSE IF( packed )
THEN
1375 isame( 5 ) =
lce( as, aa, laa )
1377 isame( 6 ) =
lce( xs, xx, lx )
1379 isame( 6 ) =
lceres(
'GE',
' ', 1, n, xs,
1382 isame( 7 ) = incxs.EQ.incx
1390 same = same.AND.isame( i )
1391 IF( .NOT.isame( i ) )
1392 $
WRITE( nout, fmt = 9998 )i
1400 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1404 CALL cmvch( trans, n, n, one, a, nmax, x,
1405 $ incx, zero, z, incx, xt, g,
1406 $ xx, eps, err, fatal, nout,
1408 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1413 z( i ) = xx( 1 + ( i - 1 )*
1415 xx( 1 + ( i - 1 )*abs( incx ) )
1418 CALL cmvch( trans, n, n, one, a, nmax, z,
1419 $ incx, zero, x, incx, xt, g,
1420 $ xx, eps, err, fatal, nout,
1423 errmax = max( errmax, err )
1446 IF( errmax.LT.thresh )
THEN
1447 WRITE( nout, fmt = 9999 )sname, nc
1449 WRITE( nout, fmt = 9997 )sname, nc, errmax
1454 WRITE( nout, fmt = 9996 )sname
1456 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1458 ELSE IF( banded )
THEN
1459 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1461 ELSE IF( packed )
THEN
1462 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1468 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1470 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1471 $
'ANGED INCORRECTLY *******' )
1472 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1473 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1474 $
' - SUSPECT *******' )
1475 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1476 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1478 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1479 $
' A,', i3,
', X,', i2,
') .' )
1480 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1481 $ i3,
', X,', i2,
') .' )
1482 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lce(RI, RJ, LR)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine cmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine ctpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPSV
subroutine ctbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBMV
subroutine ctrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CTRSV
subroutine ctbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBSV
subroutine ctrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CTRMV
subroutine ctpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPMV