161 SUBROUTINE cchkhp( 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(
178 COMPLEX ( * ), AFAC( * ), AINV( * ), B( * ),
179 $ work( * ), x( * ), xact( * )
186 PARAMETER ( ZERO = 0.0e+0 )
188 parameter( ntypes = 10 )
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, clanhp, 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 )
263 DO 160 IMAT = 1, NIMAT
267.NOT.
IF( DOTYPE( IMAT ) )
272.GE..AND..LE.
ZEROT = IMAT3 IMAT6
273.AND..LT.
IF( ZEROT NIMAT-2 )
279 UPLO = UPLOS( IUPLO )
280 IF( LSAME( UPLO, 'U' ) ) THEN
289 CALL CLATB4( PATH, IMAT, N, N, TYPE, KL, KU, ANORM, MODE,
293 CALL CLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE,
294 $ CNDNUM, ANORM, KL, KU, PACKIT, A, LDA, WORK,
300 CALL ALAERH( PATH, 'clatms', INFO, 0, UPLO, N, N, -1,
301 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
311.EQ.
ELSE IF( IMAT4 ) THEN
321.EQ.
IF( IUPLO1 ) THEN
322 IOFF = ( IZERO-1 )*IZERO / 2
323 DO 20 I = 1, IZERO - 1
333 DO 40 I = 1, IZERO - 1
344.EQ.
IF( IUPLO1 ) THEN
374.EQ.
IF( IUPLO1 ) THEN
375 CALL CLAIPD( N, A, 2, 1 )
377 CALL CLAIPD( N, A, N, -1 )
383 CALL CCOPY( NPP, A, 1, AFAC, 1 )
385 CALL CHPTRF( UPLO, N, AFAC, IWORK, INFO )
393.LT.
IF( IWORK( K )0 ) THEN
394.NE.
IF( IWORK( K )-K ) THEN
398.NE.
ELSE IF( IWORK( K )K ) THEN
407 $ CALL ALAERH( PATH, 'chptrf', INFO, K, UPLO, N, N, -1,
408 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
418 CALL CHPT01( UPLO, N, A, AFAC, IWORK, AINV, LDA, RWORK,
425.NOT.
IF( TRFCON ) THEN
426 CALL CCOPY( NPP, AFAC, 1, AINV, 1 )
428 CALL CHPTRI( UPLO, N, AINV, IWORK, WORK, INFO )
433 $ CALL ALAERH( PATH, 'chptri', INFO, 0, UPLO, N, N,
434 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
436 CALL CPPT03( UPLO, N, A, AINV, WORK, LDA, RWORK,
437 $ RCONDC, RESULT( 2 ) )
445.GE.
IF( RESULT( K )THRESH ) THEN
446.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
447 $ CALL ALAHD( NOUT, PATH )
448 WRITE( NOUT, FMT = 9999 )UPLO, N, IMAT, K,
469 CALL CLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU,
470 $ NRHS, A, LDA, XACT, LDA, B, LDA, ISEED,
473 CALL CLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
476 CALL CHPTRS( UPLO, N, NRHS, AFAC, IWORK, X, LDA,
482 $ CALL ALAERH( PATH, 'chptrs', INFO, 0, UPLO, N, N,
483 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
486 CALL CLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
487 CALL CPPT02( UPLO, N, NRHS, A, X, LDA, WORK, LDA,
488 $ RWORK, RESULT( 3 ) )
493 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
500 CALL CHPRFS( 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, 'chprfs', 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 = CLANHP( '1
', UPLO, N, A, RWORK )
538 CALL CHPCON( UPLO, N, AFAC, IWORK, ANORM, RCOND, WORK,
544 $ CALL ALAERH( PATH, 'chpcon', 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 chptri(uplo, n, ap, ipiv, work, info)
CHPTRI
subroutine chprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CHPRFS
subroutine chptrf(uplo, n, ap, ipiv, info)
CHPTRF
subroutine chptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
CHPTRS
subroutine chpcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
CHPCON
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 cppt02(uplo, n, nrhs, a, x, ldx, b, ldb, rwork, resid)
CPPT02
subroutine claipd(n, a, inda, vinda)
CLAIPD
subroutine cppt05(uplo, n, nrhs, ap, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
CPPT05
subroutine clatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
CLATB4
subroutine cppt03(uplo, n, a, ainv, work, ldwork, rwork, rcond, resid)
CPPT03
subroutine cchkhp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHP
subroutine chpt01(uplo, n, a, afac, ipiv, c, ldc, rwork, resid)
CHPT01
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