161 SUBROUTINE cchksp( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
162 $ NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK,
171 INTEGER NMAX, NN, NNS, NOUT
176 INTEGER IWORK( * ), NSVAL( * ), NVAL( * )
178 COMPLEX A( * ), AFAC( * ), AINV( * ), B( * ),
179 $ work( * ), x( * ), xact( * )
186 PARAMETER ( ZERO = 0.0e+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, IOFF, IRHS, IUPLO,
197 $ izero, j, k, kl, ku, lda, mode, n, nerrs,
198 $ nfail, nimat, npp, nrhs, nrun, nt
199 REAL ANORM, CNDNUM, RCOND, RCONDC
203 INTEGER ISEED( 4 ), ISEEDY( 4 )
204 REAL RESULT( NTESTS )
209 EXTERNAL lsame, clansp, sget06
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 ) =
'Complex precision'
243 iseed( i ) = iseedy( i )
249 $
CALL cerrsy( path, nout )
262 DO 160 imat = 1, nimat
266 IF( .NOT.dotype( imat ) )
271 zerot = imat.GE.3 .AND. imat.LE.6
272 IF( zerot .AND. n.LT.imat-2 )
278 uplo = uplos( iuplo )
279 IF( lsame( uplo,
'U' ) )
THEN
285 IF( imat.NE.ntypes )
THEN
290 CALL clatb4( path, imat, n, n,
TYPE, kl, ku, anorm,
294 CALL clatms( n, n, dist, iseed,
TYPE, rwork, mode,
295 $ cndnum, anorm, kl, ku, packit, a, lda,
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 CLATSP( UPLO, N, A, ISEED )
384 CALL CCOPY( NPP, A, 1, AFAC, 1 )
386 CALL CSPTRF( 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, 'csptrf', INFO, K, UPLO, N, N, -1,
409 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
419 CALL CSPT01( UPLO, N, A, AFAC, IWORK, AINV, LDA, RWORK,
426.NOT.
IF( TRFCON ) THEN
427 CALL CCOPY( NPP, AFAC, 1, AINV, 1 )
429 CALL CSPTRI( UPLO, N, AINV, IWORK, WORK, INFO )
434 $ CALL ALAERH( PATH, 'csptri', INFO, 0, UPLO, N, N,
435 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
437 CALL CSPT03( 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 CLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU,
471 $ NRHS, A, LDA, XACT, LDA, B, LDA, ISEED,
473 CALL CLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
476 CALL CSPTRS( UPLO, N, NRHS, AFAC, IWORK, X, LDA,
482 $ CALL ALAERH( PATH, 'csptrs', INFO, 0, UPLO, N, N,
483 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
486 CALL CLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
487 CALL CSPT02( UPLO, N, NRHS, A, X, LDA, WORK, LDA,
488 $ RWORK, RESULT( 3 ) )
493 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
500 CALL CSPRFS( 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, 'csprfs', INFO, 0, UPLO, N, N,
508 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
511 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
513 CALL CPPT05( 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 = CLANSP( '1
', UPLO, N, A, RWORK )
538 CALL CSPCON( UPLO, N, AFAC, IWORK, ANORM, RCOND, WORK,
544 $ CALL ALAERH( PATH, 'cspcon', INFO, 0, UPLO, N, N, -1,
545 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
547 RESULT( 8 ) = SGET06( 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 clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine csptri(uplo, n, ap, ipiv, work, info)
CSPTRI
subroutine csptrf(uplo, n, ap, ipiv, info)
CSPTRF
subroutine cspcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
CSPCON
subroutine csprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CSPRFS
subroutine csptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
CSPTRS
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine clarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
CLARHS
subroutine cerrsy(path, nunit)
CERRSY
subroutine cchksp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSP
subroutine cspt01(uplo, n, a, afac, ipiv, c, ldc, rwork, resid)
CSPT01
subroutine cppt05(uplo, n, nrhs, ap, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
CPPT05
subroutine cspt02(uplo, n, nrhs, a, x, ldx, b, ldb, rwork, resid)
CSPT02
subroutine cspt03(uplo, n, a, ainv, work, ldw, rwork, rcond, resid)
CSPT03
subroutine clatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
CLATB4
subroutine clatsp(uplo, n, x, iseed)
CLATSP
subroutine cget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
CGET04
subroutine clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS