161 SUBROUTINE zchksp( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
162 $ NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK,
171 INTEGER NMAX, NN, NNS, NOUT
172 DOUBLE PRECISION THRESH
176 INTEGER IWORK( * ), NSVAL( * ), NVAL( * )
177 DOUBLE PRECISION RWORK( * )
178 COMPLEX*16 A( * ), AFAC( * ), AINV( * ), B( * ),
179 $ work( * ), x( * ), xact( * )
185 DOUBLE PRECISION ZERO
186 PARAMETER ( ZERO = 0.0d+0 )
188 parameter( ntypes = 11 )
190 parameter( ntests = 8 )
193 LOGICAL TRFCON, ZEROT
194 CHARACTER DIST, PACKIT,
TYPE, UPLO, XTYPE
196 INTEGER I, I1, I2, IMAT, IN, INFO, , IRHS, IUPLO,
197 $ izero, j, k, kl, ku, lda, mode, n, nerrs,
198 $ nfail, nimat, npp, nrhs, nrun, nt
199 DOUBLE PRECISION ANORM, CNDNUM, RCOND, RCONDC
203 INTEGER ISEED( 4 ), ISEEDY( 4 )
204 DOUBLE PRECISION RESULT( NTESTS )
208 DOUBLE PRECISION DGET06, ZLANSP
209 EXTERNAL lsame, dget06, zlansp
226 COMMON / infoc / infot, nunit, ok, lerr
227 COMMON / srnamc / srnamt
230 DATA iseedy / 1988, 1989, 1990, 1991 /
231 DATA uplos /
'U',
'L' /
237 path( 1: 1 ) =
'Zomplex precision'
243 iseed( i ) = iseedy( i )
249 $
CALL zerrsy( path, nout )
262 DO 160 IMAT = 1, NIMAT
266.NOT.
IF( DOTYPE( IMAT ) )
271.GE..AND..LE.
ZEROT = IMAT3 IMAT6
272.AND..LT.
IF( ZEROT NIMAT-2 )
278 UPLO = UPLOS( IUPLO )
279 IF( LSAME( UPLO, 'u
' ) ) THEN
285.NE.
IF( IMATNTYPES ) THEN
290 CALL ZLATB4( PATH, IMAT, N, N, TYPE, KL, KU, ANORM,
291 $ MODE, CNDNUM, DIST )
294 CALL ZLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE,
295 $ CNDNUM, ANORM, KL, KU, PACKIT, A, LDA,
301 CALL ALAERH( PATH, 'zlatms', INFO, 0, UPLO, N, N,
302 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
312.EQ.
ELSE IF( IMAT4 ) THEN
322.EQ.
IF( IUPLO1 ) THEN
323 IOFF = ( IZERO-1 )*IZERO / 2
324 DO 20 I = 1, IZERO - 1
334 DO 40 I = 1, IZERO - 1
344.EQ.
IF( IUPLO1 ) THEN
378 CALL ZLATSP( UPLO, N, A, ISEED )
384 CALL ZCOPY( NPP, A, 1, AFAC, 1 )
386 CALL ZSPTRF( UPLO, N, AFAC, IWORK, INFO )
394.LT.
IF( IWORK( K )0 ) THEN
395.NE.
IF( IWORK( K )-K ) THEN
399.NE.
ELSE IF( IWORK( K )K ) THEN
408 $ CALL ALAERH( PATH, 'zsptrf', INFO, K, UPLO, N, N, -1,
409 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
419 CALL ZSPT01( UPLO, N, A, AFAC, IWORK, AINV, LDA, RWORK,
426.NOT.
IF( TRFCON ) THEN
427 CALL ZCOPY( NPP, AFAC, 1, AINV, 1 )
429 CALL ZSPTRI( UPLO, N, AINV, IWORK, WORK, INFO )
434 $ CALL ALAERH( PATH, 'zsptri', INFO, 0, UPLO, N, N,
435 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
437 CALL ZSPT03( UPLO, N, A, AINV, WORK, LDA, RWORK,
438 $ RCONDC, RESULT( 2 ) )
446.GE.
IF( RESULT( K )THRESH ) THEN
447.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
448 $ CALL ALAHD( NOUT, PATH )
449 WRITE( NOUT, FMT = 9999 )UPLO, N, IMAT, K,
470 CALL ZLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU,
471 $ NRHS, A, LDA, XACT, LDA, B, LDA, ISEED,
473 CALL ZLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
476 CALL ZSPTRS( UPLO, N, NRHS, AFAC, IWORK, X, LDA,
482 $ CALL ALAERH( PATH, 'zsptrs', INFO, 0, UPLO, N, N,
483 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
486 CALL ZLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
487 CALL ZSPT02( UPLO, N, NRHS, A, X, LDA, WORK, LDA,
488 $ RWORK, RESULT( 3 ) )
493 CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
500 CALL ZSPRFS( UPLO, N, NRHS, A, AFAC, IWORK, B, LDA, X,
501 $ LDA, RWORK, RWORK( NRHS+1 ), WORK,
502 $ RWORK( 2*NRHS+1 ), INFO )
507 $ CALL ALAERH( PATH, 'zsprfs', INFO, 0, UPLO, N, N,
508 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
511 CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
513 CALL ZPPT05( UPLO, N, NRHS, A, B, LDA, X, LDA, XACT,
514 $ LDA, RWORK, RWORK( NRHS+1 ),
521.GE.
IF( RESULT( K )THRESH ) THEN
522.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
523 $ CALL ALAHD( NOUT, PATH )
524 WRITE( NOUT, FMT = 9998 )UPLO, N, NRHS, IMAT,
536 ANORM = ZLANSP( '1
', UPLO, N, A, RWORK )
538 CALL ZSPCON( UPLO, N, AFAC, IWORK, ANORM, RCOND, WORK,
544 $ CALL ALAERH( PATH, 'zspcon', INFO, 0, UPLO, N, N, -1,
545 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
547 RESULT( 8 ) = DGET06( RCOND, RCONDC )
551.GE.
IF( RESULT( 8 )THRESH ) THEN
552.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
553 $ CALL ALAHD( NOUT, PATH )
554 WRITE( NOUT, FMT = 9999 )UPLO, N, IMAT, 8,
565 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
567 9999 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ',
type ', I2, ', test
',
568 $ I2, ', ratio =
', G12.5 )
569 9998 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ', nrhs=
', I3, 'type ',
570 $ I2, ', test(
', I2, ') =
', G12.5 )
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine alahd(iounit, path)
ALAHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zsprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
ZSPRFS
subroutine zsptri(uplo, n, ap, ipiv, work, info)
ZSPTRI
subroutine zsptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
ZSPTRS
subroutine zsptrf(uplo, n, ap, ipiv, info)
ZSPTRF
subroutine zspcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
ZSPCON
subroutine zcopy(n, zx, incx, zy, incy)
ZCOPY
subroutine zlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
ZLARHS
subroutine zppt05(uplo, n, nrhs, ap, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
ZPPT05
subroutine zspt01(uplo, n, a, afac, ipiv, c, ldc, rwork, resid)
ZSPT01
subroutine zget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
ZGET04
subroutine zspt02(uplo, n, nrhs, a, x, ldx, b, ldb, rwork, resid)
ZSPT02
subroutine zspt03(uplo, n, a, ainv, work, ldw, rwork, rcond, resid)
ZSPT03
subroutine zchksp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSP
subroutine zerrsy(path, nunit)
ZERRSY
subroutine zlatsp(uplo, n, x, iseed)
ZLATSP
subroutine zlatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
ZLATB4
subroutine zlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
ZLATMS