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