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 $ rwork( * ), 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, IOFF, 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 )
232 COMMON / infoc / infot, nunit, ok, lerr
233 COMMON / srnamc / srnamt
236 DATA iseedy / 1988, 1989, 1990, 1991 /
237 DATA uplos /
'U',
'L' /
245 path( 1: 1 ) =
'Zomplex precision'
250 matpath( 1: 1 ) =
'Zomplex precision'
251 matpath( 2: 3 ) =
'HE'
256 iseed( i ) = iseedy( i )
262 $
CALL zerrhe( path, nout )
274 IF( n .GT. nmax )
THEN
276 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 )
313 CALL zlatb4( matpath, imat, n, n,
TYPE, kl, ku,
314 $ anorm, mode, cndnum, dist )
319 CALL zlatms( n, n, dist, iseed,
TYPE, rwork, mode,
320 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
326 CALL alaerh( path,
'ZLATMS', info, 0, uplo, n, n, -1,
327 $ -1, -1, imat, nfail, nerrs, nout )
341 ELSE IF( imat.EQ.4 )
THEN
351 IF( iuplo.EQ.1 )
THEN
352 ioff = ( izero-1 )*lda
353 DO 20 i = 1, izero - 1
363 DO 40 i = 1, izero - 1
373 IF( iuplo.EQ.1 )
THEN
409 CALL zlaipd( n, a, lda+1, 0 )
425 CALL zlacpy( uplo, n, n, a, lda, afac, lda )
432 srnamt =
'ZHETRF_AA_2STAGE'
433 lwork = min(n*nb, 3*nmax*nmax)
436 $ iwork, iwork( 1+n ),
443 IF( izero.GT.0 )
THEN
449 ELSE IF( iwork( j ).EQ.k )
THEN
463 CALL alaerh( path,
'ZHETRF_AA_2STAGE', info, k,
464 $ uplo, n, n, -1, -1, nb, imat, nfail,
482 IF( result( k ).GE.thresh )
THEN
483 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
484 $
CALL alahd( nout, path )
485 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
510 CALL zlarhs( matpath, xtype, uplo,
' ', n, n,
511 $ kl, ku, nrhs, a, lda, xact, lda,
512 $ b, lda, iseed, info )
513 CALL zlacpy(
'Full', n, nrhs, b, lda, x, lda )
515 srnamt =
'ZHETRS_AA_2STAGE'
516 lwork = max( 1, 3*n-2 )
518 $ ainv, (3*nb+1)*n, iwork, iwork( 1+n ),
524 IF( izero.EQ.0 )
THEN
525 CALL alaerh( path,
'ZHETRS_AA_2STAGE',
526 $ info, 0, uplo, n, n, -1, -1,
527 $ nrhs, imat, nfail, nerrs, nout )
531 CALL zlacpy(
'Full', n, nrhs, b, lda, work, lda
536 CALL zpot02( uplo, n, nrhs, a, lda, x, lda,
537 $ work, lda, rwork, result( 2 ) )
543 IF( result( k ).GE.thresh )
THEN
544 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
545 $
CALL alahd( nout, path )
546 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
547 $ imat, k, result( k )
565 CALL alasum( path, nout, nfail, nrun, nerrs )
567 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
568 $ i2,
', test ', i2,
', ratio =', g12.5 )
569 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
570 $ i2,
', test(', i2,
') =', g12.5 )
571 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