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 *',