171 SUBROUTINE zchkhe_aa( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
172 $ THRESH, TSTERR, NMAX, A, AFAC, AINV, B,
173 $ X, XACT, WORK, RWORK, IWORK, NOUT )
184 INTEGER NMAX, NN, NNB, NNS, NOUT
185 DOUBLE PRECISION THRESH
189 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
190 DOUBLE PRECISION RWORK( * )
191 COMPLEX*16 A( * ), AFAC( * ), AINV( * ), B( * ),
192 $ work( * ), x( * ), xact( * )
198 DOUBLE PRECISION ZERO
199 parameter( zero = 0.0d+0 )
201 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
203 parameter( ntypes = 10 )
205 parameter( ntests = 9 )
209 CHARACTER DIST,
TYPE, UPLO, XTYPE
210 CHARACTER*3 PATH, MATPATH
211 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS,
212 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
213 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
214 DOUBLE PRECISION ANORM, CNDNUM
218 INTEGER ISEED( 4 ), ISEEDY( 4 )
219 DOUBLE PRECISION RESULT( ntests )
235 COMMON / infoc / infot, nunit, ok, lerr
236 COMMON / srnamc / srnamt
239 DATA iseedy / 1988, 1989, 1990, 1991 /
240 DATA uplos /
'U',
'L' /
248 path( 1: 1 ) =
'Zomplex precision' 253 matpath( 1: 1 ) =
'Zomplex precision' 254 matpath( 2: 3 ) =
'HE' 259 iseed( i ) = iseedy( i )
265 $
CALL zerrhe( path, nout )
277 IF( n .GT. nmax )
THEN 279 WRITE(nout, 9995)
'M ', n, nmax
289 DO 170 imat = 1, nimat
293 IF( .NOT.dotype( imat ) )
298 zerot = imat.GE.3 .AND. imat.LE.6
299 IF( zerot .AND. n.LT.imat-2 )
305 uplo = uplos( iuplo )
310 CALL zlatb4( matpath, imat, n, n,
TYPE, KL, KU,
311 $ anorm, mode, cndnum, dist )
316 CALL zlatms( n, n, dist, iseed,
TYPE, RWORK, MODE,
317 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
323 CALL alaerh( path,
'ZLATMS', info, 0, uplo, n, n, -1,
324 $ -1, -1, imat, nfail, nerrs, nout )
337 ELSE IF( imat.EQ.4 )
THEN 347 IF( iuplo.EQ.1 )
THEN 348 ioff = ( izero-1 )*lda
349 DO 20 i = 1, izero - 1
359 DO 40 i = 1, izero - 1
369 IF( iuplo.EQ.1 )
THEN 405 CALL zlaipd( n, a, lda+1, 0 )
421 CALL zlacpy( uplo, n, n, a, lda, afac, lda )
428 lwork = max( 1, ( nb+1 )*lda )
430 CALL zhetrf_aa( uplo, n, afac, lda, iwork, ainv,
456 CALL alaerh( path,
'ZHETRF_AA', info, k, uplo,
457 $ n, n, -1, -1, nb, imat, nfail, nerrs,
464 CALL zhet01_aa( uplo, n, a, lda, afac, lda, iwork,
465 $ ainv, lda, rwork, result( 1 ) )
473 IF( result( k ).GE.thresh )
THEN 474 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
475 $
CALL alahd( nout, path )
476 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
501 CALL zlarhs( matpath, xtype, uplo,
' ', n, n,
502 $ kl, ku, nrhs, a, lda, xact, lda,
503 $ b, lda, iseed, info )
504 CALL zlacpy(
'Full', n, nrhs, b, lda, x, lda )
507 lwork = max( 1, 3*n-2 )
508 CALL zhetrs_aa( uplo, n, nrhs, afac, lda, iwork,
509 $ x, lda, work, lwork, info )
514 IF( izero.EQ.0 )
THEN 515 CALL alaerh( path,
'ZHETRS_AA', info, 0,
516 $ uplo, n, n, -1, -1, nrhs, imat,
517 $ nfail, nerrs, nout )
521 CALL zlacpy(
'Full', n, nrhs, b, lda, work, lda
526 CALL zpot02( uplo, n, nrhs, a, lda, x, lda,
527 $ work, lda, rwork, result( 2 ) )
533 IF( result( k ).GE.thresh )
THEN 534 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
535 $
CALL alahd( nout, path )
536 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
537 $ imat, k, result( k )
555 CALL alasum( path, nout, nfail, nrun, nerrs )
557 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
558 $ i2,
', test ', i2,
', ratio =', g12.5 )
559 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
560 $ i2,
', test(', i2,
') =', g12.5 )
563 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
subroutine alahd(IOUNIT, PATH)
ALAHD
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 zerrhe(PATH, NUNIT)
ZERRHE
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 zlatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
ZLATB4
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine zlaipd(N, A, INDA, VINDA)
ZLAIPD
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
subroutine zlarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
ZLARHS
subroutine zpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
ZPOT02
subroutine zhet01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
ZHET01_AA
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 alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM