170 $ NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV,
171 $ B, X, XACT, WORK, RWORK, IWORK, NOUT )
181 INTEGER NN, NNB, NNS, NMAX, NOUT
182 DOUBLE PRECISION THRESH
186 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
187 COMPLEX*16 A( * ), AFAC( * ), AINV( * ), B( * ),
188 $ work( * ), x( * ), xact( * )
189 DOUBLE PRECISION RWORK( * )
195 DOUBLE PRECISION ZERO
196 PARAMETER ( ZERO = 0.0d+0 )
198 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
200 parameter( ntypes = 10 )
202 parameter( ntests = 9 )
206 CHARACTER DIST,
TYPE, UPLO, XTYPE
207 CHARACTER*3 PATH, MATPATH
208 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS,
209 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
210 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
211 DOUBLE PRECISION ANORM, CNDNUM
215 INTEGER ISEED( 4 ), ISEEDY( 4 )
216 DOUBLE PRECISION RESULT( NTESTS )
233 COMMON / infoc / infot, nunit, ok, lerr
234 COMMON / srnamc / srnamt
237 DATA iseedy / 1988, 1989, 1990, 1991 /
238 DATA uplos /
'U',
'L' /
246 path( 1: 1 ) =
'Zomplex precision'
251 matpath( 1: 1 ) =
'Zomplex precision'
252 matpath( 2: 3 ) =
'HE'
257 iseed( i ) = iseedy( i )
263 $
CALL zerrhe( path, nout )
275 IF( n .GT. nmax )
THEN
277 WRITE(nout, 9995)
'M ', n, nmax
290 DO 170 imat = 1, nimat
294 IF( .NOT.dotype( imat ) )
299 zerot = imat.GE.3 .AND. imat.LE.6
300 IF( zerot .AND. n.LT.imat-2 )
306 uplo = uplos( iuplo )
314 CALL zlatb4( matpath, imat, n, n,
TYPE, kl, ku,
315 $ anorm, mode, cndnum, dist )
320 CALL zlatms( n, n, dist, iseed,
TYPE, rwork, mode,
321 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
327 CALL alaerh( path,
'ZLATMS', info, 0, uplo, n, n, -1,
328 $ -1, -1, imat, nfail, nerrs, nout )
342 ELSE IF( imat.EQ.4 )
THEN
352 IF( iuplo.EQ.1 )
THEN
353 ioff = ( izero-1 )*lda
354 DO 20 i = 1, izero - 1
364 DO 40 i = 1, izero - 1
374 IF( iuplo.EQ.1 )
THEN
410 CALL zlaipd( n, a, lda+1, 0 )
426 CALL zlacpy( uplo, n, n, a, lda, afac, lda )
433 srnamt =
'ZHETRF_AA_2STAGE'
434 lwork = min(n*nb, 3*nmax*nmax)
437 $ iwork, iwork( 1+n ),
444 IF( izero.GT.0 )
THEN
450 ELSE IF( iwork( j ).EQ.k )
THEN
464 CALL alaerh( path,
'ZHETRF_AA_2STAGE', info, k,
465 $ uplo, n, n, -1, -1, nb, imat, nfail,
483 IF( result( k ).GE.thresh )
THEN
484 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
485 $
CALL alahd( nout, path )
486 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
511 CALL zlarhs( matpath, xtype, uplo,
' ', n, n,
512 $ kl, ku, nrhs, a, lda, xact, lda,
513 $ b, lda, iseed, info )
514 CALL zlacpy(
'Full', n, nrhs, b, lda, x, lda )
516 srnamt =
'ZHETRS_AA_2STAGE'
517 lwork = max( 1, 3*n-2 )
519 $ ainv, (3*nb+1)*n, iwork, iwork( 1+n ),
525 IF( izero.EQ.0 )
THEN
526 CALL alaerh( path,
'ZHETRS_AA_2STAGE',
527 $ info, 0, uplo, n, n, -1, -1,
528 $ nrhs, imat, nfail, nerrs, nout )
532 CALL zlacpy(
'Full', n, nrhs, b, lda, work, lda
537 CALL zpot02( uplo, n, nrhs, a, lda, x, lda,
538 $ work, lda, rwork, result( 2 ) )
544 IF( result( k ).GE.thresh )
THEN
545 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
546 $
CALL alahd( nout, path )
547 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
548 $ imat, k, result( k )
566 CALL alasum( path, nout, nfail, nrun, nerrs )
568 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
569 $ i2,
', test ', i2,
', ratio =', g12.5 )
570 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
571 $ i2,
', test(', i2,
') =', g12.5 )
572 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine alahd(IOUNIT, PATH)
ALAHD
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine zlarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
ZLARHS
subroutine zerrhe(PATH, NUNIT)
ZERRHE
subroutine zlaipd(N, A, INDA, VINDA)
ZLAIPD
subroutine zchkhe_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE_AA_2STAGE
subroutine zpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
ZPOT02
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
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zhetrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
ZHETRS_AA_2STAGE
subroutine zhetrf_aa_2stage(UPLO, N, A, LDA, TB, LTB, IPIV, IPIV2, WORK, LWORK, INFO)
ZHETRF_AA_2STAGE