1143 COMPLEX zero, half, one
1144 parameter ( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ),
1145 $ one = ( 1.0, 0.0 ) )
1147 parameter ( rzero = 0.0 )
1150 INTEGER incmax, nidim, ninc, nkb, nmax, nout, ntra
1151 LOGICAL fatal, rewi, trace
1154 COMPLEX a( nmax, nmax ), aa( nmax*nmax ),
1155 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1156 $ xt( nmax ), xx( nmax*incmax ), z( nmax )
1158 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
1162 INTEGER i, icd, ict, icu, ik, in, incx, incxs, ix, k,
1163 $ ks, laa, lda, ldas, lx, n, nargs, nc, nk, ns
1164 LOGICAL banded, full, null, packed, reset, same
1165 CHARACTER*1 diag, diags, trans, transs, uplo, uplos
1166 CHARACTER*2 ichd, ichu
1179 INTEGER infot, noutc
1182 COMMON /infoc/infot, noutc, ok, lerr
1184 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1186 full = sname( 3: 3 ).EQ.
'R'
1187 banded = sname( 3: 3 ).EQ.
'B'
1188 packed = sname( 3: 3 ).EQ.
'P'
1192 ELSE IF( banded )
THEN
1194 ELSE IF( packed )
THEN
1206 DO 110 in = 1, nidim
1232 laa = ( n*( n + 1 ) )/2
1239 uplo = ichu( icu: icu )
1242 trans = icht( ict: ict )
1245 diag = ichd( icd: icd )
1250 CALL cmake( sname( 2: 3 ), uplo, diag, n, n, a,
1251 $ nmax, aa, lda, k, k, reset, transl )
1260 CALL cmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1261 $ abs( incx ), 0, n - 1, reset,
1265 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1288 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1291 $
WRITE( ntra, fmt = 9993 )nc, sname,
1292 $ uplo, trans, diag, n, lda, incx
1295 CALL ctrmv( uplo, trans, diag, n, aa, lda,
1297 ELSE IF( banded )
THEN
1299 $
WRITE( ntra, fmt = 9994 )nc, sname,
1300 $ uplo, trans, diag, n, k, lda, incx
1303 CALL ctbmv( uplo, trans, diag, n, k, aa,
1305 ELSE IF( packed )
THEN
1307 $
WRITE( ntra, fmt = 9995 )nc, sname,
1308 $ uplo, trans, diag, n, incx
1311 CALL ctpmv( uplo, trans, diag, n, aa, xx,
1314 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1317 $
WRITE( ntra, fmt = 9993 )nc, sname,
1318 $ uplo, trans, diag, n, lda, incx
1321 CALL ctrsv( uplo, trans, diag, n, aa, lda,
1323 ELSE IF( banded )
THEN
1325 $
WRITE( ntra, fmt = 9994 )nc, sname,
1326 $ uplo, trans, diag, n, k, lda, incx
1329 CALL ctbsv( uplo, trans, diag, n, k, aa,
1331 ELSE IF( packed )
THEN
1333 $
WRITE( ntra, fmt = 9995 )nc, sname,
1334 $ uplo, trans, diag, n, incx
1337 CALL ctpsv( uplo, trans, diag, n, aa, xx,
1345 WRITE( nout, fmt = 9992 )
1352 isame( 1 ) = uplo.EQ.uplos
1353 isame( 2 ) = trans.EQ.transs
1354 isame( 3 ) = diag.EQ.diags
1355 isame( 4 ) = ns.EQ.n
1357 isame( 5 ) =
lce( as, aa, laa )
1358 isame( 6 ) = ldas.EQ.lda
1360 isame( 7 ) =
lce( xs, xx, lx )
1362 isame( 7 ) =
lceres(
'GE',
' ', 1, n, xs,
1365 isame( 8 ) = incxs.EQ.incx
1366 ELSE IF( banded )
THEN
1367 isame( 5 ) = ks.EQ.k
1368 isame( 6 ) =
lce( as, aa, laa )
1369 isame( 7 ) = ldas.EQ.lda
1371 isame( 8 ) =
lce( xs, xx, lx )
1373 isame( 8 ) =
lceres(
'GE',
' ', 1, n, xs,
1376 isame( 9 ) = incxs.EQ.incx
1377 ELSE IF( packed )
THEN
1378 isame( 5 ) =
lce( as, aa, laa )
1380 isame( 6 ) =
lce( xs, xx, lx )
1382 isame( 6 ) =
lceres(
'GE',
' ', 1, n, xs,
1385 isame( 7 ) = incxs.EQ.incx
1393 same = same.AND.isame( i )
1394 IF( .NOT.isame( i ) )
1395 $
WRITE( nout, fmt = 9998 )i
1403 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1407 CALL cmvch( trans, n, n, one, a, nmax, x,
1408 $ incx, zero, z, incx, xt, g,
1409 $ xx, eps, err, fatal, nout,
1411 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1416 z( i ) = xx( 1 + ( i - 1 )*
1418 xx( 1 + ( i - 1 )*abs( incx ) )
1421 CALL cmvch( trans, n, n, one, a, nmax, z,
1422 $ incx, zero, x, incx, xt, g,
1423 $ xx, eps, err, fatal, nout,
1426 errmax = max( errmax, err )
1449 IF( errmax.LT.thresh )
THEN
1450 WRITE( nout, fmt = 9999 )sname, nc
1452 WRITE( nout, fmt = 9997 )sname, nc, errmax
1457 WRITE( nout, fmt = 9996 )sname
1459 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1461 ELSE IF( banded )
THEN
1462 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1464 ELSE IF( packed )
THEN
1465 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1471 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1473 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1474 $
'ANGED INCORRECTLY *******' )
1475 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1476 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1477 $
' - SUSPECT *******' )
1478 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1479 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1481 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1482 $
' A,', i3,
', X,', i2,
') .' )
1483 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1484 $ i3,
', X,', i2,
') .' )
1485 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine ctpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPMV
subroutine ctrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CTRSV
subroutine cmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine ctbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBMV
logical function lce(RI, RJ, LR)
subroutine ctrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CTRMV
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine ctpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
CTPSV
subroutine ctbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBSV