168 SUBROUTINE zchkhe_aa( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
169 $ THRESH, TSTERR, NMAX, A, AFAC, AINV, B,
170 $ X, XACT, WORK, RWORK, IWORK, NOUT )
180INTEGER NMAX, NN, NNB, NNS, NOUT
181 DOUBLE PRECISION THRESH
185 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
186 DOUBLE PRECISION RWORK( * )
187 COMPLEX*16 A( * ), AFAC( * ), AINV( * ), B( * ),
188 $ work( * ), x( * ), xact( * )
194 DOUBLE PRECISION ZERO
195 PARAMETER ( ZERO = 0.0d+0 )
197 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
199 parameter( ntypes = 10 )
201 parameter( ntests = 9 )
205 CHARACTER DIST,
TYPE, UPLO, XTYPE
206 CHARACTER*3 PATH, MATPATH
207 INTEGER I, I1, I2, IMAT, IN, INB, INFO, , IRHS,
208 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
209 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
210 DOUBLE PRECISION ANORM, CNDNUM
214 INTEGER ISEED( 4 ), ISEEDY( 4 )
215 DOUBLE PRECISION RESULT( NTESTS )
231 COMMON / infoc / infot, nunit, ok, lerr
232 COMMON / srnamc / srnamt
235 DATA iseedy / 1988, 1989, 1990, 1991 /
236 DATA uplos /
'U',
'L' /
244 path( 1: 1 ) =
'Zomplex precision'
249 matpath( 1: 1 ) =
'Zomplex precision'
250 matpath( 2: 3 ) =
'HE'
255 iseed( i ) = iseedy( i )
261 $
CALL zerrhe( path, nout )
273 IF( n .GT. nmax )
THEN
275 WRITE(nout, 9995)
'M ', n, nmax
285 DO 170 imat = 1, nimat
294 zerot = imat.GE.3 .AND. imat.LE.6
295 IF( zerot .AND. n.LT.imat-2 )
301 uplo = uplos( iuplo )
306 CALL zlatb4( matpath, imat, n, n,
TYPE, kl, ku,
307 $ anorm, mode, cndnum, dist )
312 CALL zlatms( n, n, dist, iseed,
TYPE, rwork, mode,
313 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
320 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
333.EQ.
ELSE IF( IMAT4 ) THEN
343.EQ.
IF( IUPLO1 ) THEN
344 IOFF = ( IZERO-1 )*LDA
345 DO 20 I = 1, IZERO - 1
355 DO 40 I = 1, IZERO - 1
365.EQ.
IF( IUPLO1 ) THEN
401 CALL ZLAIPD( N, A, LDA+1, 0 )
417 CALL ZLACPY( UPLO, N, N, A, LDA, AFAC, LDA )
424 LWORK = MAX( 1, ( NB+1 )*LDA )
426 CALL ZHETRF_AA( UPLO, N, AFAC, LDA, IWORK, AINV,
452 CALL ALAERH( PATH, 'zhetrf_aa', INFO, K, UPLO,
453 $ N, N, -1, -1, NB, IMAT, NFAIL, NERRS,
460 CALL ZHET01_AA( UPLO, N, A, LDA, AFAC, LDA, IWORK,
461 $ AINV, LDA, RWORK, RESULT( 1 ) )
469.GE.
IF( RESULT( K )THRESH ) THEN
470.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
471 $ CALL ALAHD( NOUT, PATH )
472 WRITE( NOUT, FMT = 9999 )UPLO, N, NB, IMAT, K,
497 CALL ZLARHS( MATPATH, XTYPE, UPLO, ' ', N, N,
498 $ KL, KU, NRHS, A, LDA, XACT, LDA,
499 $ B, LDA, ISEED, INFO )
500 CALL ZLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
503 LWORK = MAX( 1, 3*N-2 )
504 CALL ZHETRS_AA( UPLO, N, NRHS, AFAC, LDA, IWORK,
505 $ X, LDA, WORK, LWORK, INFO )
510.EQ.
IF( IZERO0 ) THEN
512 $ UPLO, N, N, -1, -1, NRHS, IMAT,
513 $ NFAIL, NERRS, NOUT )
517 CALL ZLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA
522 CALL ZPOT02( UPLO, N, NRHS, A, LDA, X, LDA,
523 $ WORK, LDA, RWORK, RESULT( 2 ) )
529.GE.
IF( RESULT( K )THRESH ) THEN
530.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
531 $ CALL ALAHD( NOUT, PATH )
532 WRITE( NOUT, FMT = 9998 )UPLO, N, NRHS,
533 $ IMAT, K, RESULT( K )
551 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
553 9999 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ', nb =
', I4, ',
type ',
554 $ I2, ', test
', I2, ', ratio =
', G12.5 )
555 9998 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ', nrhs=
', I3, ',
type ',
556 $ I2, ', test(
', I2, ') =
', G12.5 )
559 9995 FORMAT( ' invalid input
value:
', A4, '=
', I6, '; must be <=
',
subroutine xlaenv(ispec, nvalue)
XLAENV
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 zhetrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
ZHETRF_AA
subroutine zhetrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info)
ZHETRS_AA
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
ZLARHS
subroutine zchkhe_aa(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHE_AA
subroutine zhet01_aa(uplo, n, a, lda, afac, ldafac, ipiv, c, ldc, rwork, resid)
ZHET01_AA
subroutine zerrhe(path, nunit)
ZERRHE
subroutine zpot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
ZPOT02
subroutine zlaipd(n, a, inda, vinda)
ZLAIPD
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