152 SUBROUTINE zdrvhe_aa( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
153 $ NMAX, A, AFAC, AINV, B, X, XACT, WORK,
154 $ RWORK, IWORK, NOUT )
163 INTEGER NMAX, NN, NOUT, NRHS
164 DOUBLE PRECISION THRESH
168 INTEGER IWORK( * ), NVAL( * )
169 DOUBLE PRECISION RWORK( * )
170 COMPLEX*16 A( * ), AFAC( * ), AINV( * ), B( * ),
171 $ work( * ), x( * ), xact( * )
177 DOUBLE PRECISION ONE, ZERO
178 parameter( one = 1.0d+0, zero = 0.0d+0 )
179 INTEGER NTYPES, NTESTS
180 parameter( ntypes = 10, ntests = 3 )
182 parameter( nfact = 2 )
186 CHARACTER DIST, FACT,
TYPE, UPLO, XTYPE
187 CHARACTER*3 MATPATH, PATH
188 INTEGER I, I1, I2, IFACT, IMAT, IN, INFO, IOFF, IUPLO,
189 $ izero, j, k, kl, ku, lda, lwork, mode, n,
190 $ nb, nbmin, nerrs, nfail, nimat, nrun, nt
191 DOUBLE PRECISION ANORM, CNDNUM
194 CHARACTER FACTS( nfact ), UPLOS( 2 )
195 INTEGER ISEED( 4 ), ISEEDY( 4 )
196 DOUBLE PRECISION RESULT( ntests )
199 DOUBLE PRECISION DGET06, ZLANHE
200 EXTERNAL dget06, zlanhe
214 COMMON / infoc / infot, nunit, ok, lerr
215 COMMON / srnamc / srnamt
218 INTRINSIC dcmplx, max, min
221 DATA iseedy / 1988, 1989, 1990, 1991 /
222 DATA uplos /
'U',
'L' / , facts /
'F',
'N' /
230 path( 1: 1 ) =
'Zomplex precision' 235 matpath( 1: 1 ) =
'Zomplex precision' 236 matpath( 2: 3 ) =
'HE' 242 iseed( i ) = iseedy( i )
244 lwork = max( 2*nmax, nmax*nrhs )
249 $
CALL zerrvx( path, nout )
269 DO 170 imat = 1, nimat
273 IF( .NOT.dotype( imat ) )
278 zerot = imat.GE.3 .AND. imat.LE.6
279 IF( zerot .AND. n.LT.imat-2 )
285 uplo = uplos( iuplo )
292 CALL zlatb4( matpath, imat, n, n,
TYPE, KL, KU, ANORM,
293 $ mode, cndnum, dist )
296 CALL zlatms( n, n, dist, iseed,
TYPE, RWORK, MODE,
297 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
303 CALL alaerh( path,
'ZLATMS', info, 0, uplo, n, n, -1,
304 $ -1, -1, imat, nfail, nerrs, nout )
314 ELSE IF( imat.EQ.4 )
THEN 324 IF( iuplo.EQ.1 )
THEN 325 ioff = ( izero-1 )*lda
326 DO 20 i = 1, izero - 1
336 DO 40 i = 1, izero - 1
347 IF( iuplo.EQ.1 )
THEN 378 CALL zlaipd( n, a, lda+1, 0 )
380 DO 150 ifact = 1, nfact
384 fact = facts( ifact )
389 CALL zlarhs( matpath, xtype, uplo,
' ', n, n, kl, ku,
390 $ nrhs, a, lda, xact, lda, b, lda, iseed,
396 IF( ifact.EQ.2 )
THEN 397 CALL zlacpy( uplo, n, n, a, lda, afac, lda )
398 CALL zlacpy(
'Full', n, nrhs, b, lda, x, lda )
403 CALL zhesv_aa( uplo, n, nrhs, afac, lda, iwork,
404 $ x, lda, work, lwork, info )
409 IF( izero.GT.0 )
THEN 415 ELSE IF( iwork( j ).EQ.k )
THEN 429 CALL alaerh( path,
'ZHESV_AA', info, k, uplo, n,
430 $ n, -1, -1, nrhs, imat, nfail,
433 ELSE IF( info.NE.0 )
THEN 440 CALL zhet01_aa( uplo, n, a, lda, afac, lda,
441 $ iwork, ainv, lda, rwork,
446 CALL zlacpy(
'Full', n, nrhs, b, lda, work, lda )
447 CALL zpot02( uplo, n, nrhs, a, lda, x, lda, work,
448 $ lda, rwork, result( 2 ) )
455 IF( result( k ).GE.thresh )
THEN 456 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
457 $
CALL aladhd( nout, path )
458 WRITE( nout, fmt = 9999 )
'ZHESV_AA', uplo, n,
459 $ imat, k, result( k )
475 CALL alasvm( path, nout, nfail, nrun, nerrs )
477 9999
FORMAT( 1x, a,
', UPLO=''', a1,
''', N =', i5,
', type ', i2,
478 $
', test ', i2,
', ratio =', g12.5 )
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine zhetri2(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZHETRI2
subroutine zget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
ZGET04
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine zhesv_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
ZHESV_AA computes the solution to system of linear equations A * X = B for HE matrices ...
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 aladhd(IOUNIT, PATH)
ALADHD
subroutine zerrvx(PATH, NUNIT)
ZERRVX
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 zdrvhe_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA