155 SUBROUTINE zdrvhe_rk( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
156 $ NMAX, A, AFAC, E, AINV, B, X, XACT, WORK,
157 $ RWORK, IWORK, NOUT )
165 INTEGER NMAX, NN, NOUT, NRHS
166 DOUBLE PRECISION THRESH
170 INTEGER IWORK( * ), NVAL( * )
171 DOUBLE PRECISION ( * )
172 COMPLEX*16 A( * ), AFAC( * ), AINV( * ), B( * )
179 DOUBLE PRECISION ONE, ZERO
180 PARAMETER ( = 1.0d+0, zero = 0.0d+0 )
181 INTEGER NTYPES, NTESTS
182 parameter( ntypes = 10, ntests = 3 )
184 parameter( nfact = 2 )
188 CHARACTER DIST, FACT,
TYPE, UPLO, XTYPE
190 INTEGER I, I1, I2, IFACT, IMAT, IN, INFO, IOFF, IUPLO,
191 $ izero, j, k, kl, ku, lda, lwork, mode, n,
192 $ nb, nbmin, nerrs, nfail, nimat, nrun, nt
193 DOUBLE PRECISION AINVNM, ANORM, CNDNUM, RCONDC
196 CHARACTER FACTS( NFACT ), UPLOS( 2 )
197 INTEGER ISEED( 4 ), ISEEDY( 4 )
198 DOUBLE PRECISION RESULT( NTESTS )
202 DOUBLE PRECISION ZLANHE
216 COMMON / infoc / infot, nunit, ok, lerr
217 COMMON / srnamc / srnamt
223 DATA iseedy / 1988, 1989, 1990, 1991 /
224 DATA uplos /
'U',
'L' / , facts / 'f
', 'n
' /
232 PATH( 1: 1 ) = 'zomplex precision
'
237 MATPATH( 1: 1 ) = 'zomplex precision
'
238 MATPATH( 2: 3 ) = 'he
'
244 ISEED( I ) = ISEEDY( I )
246 LWORK = MAX( 2*NMAX, NMAX*NRHS )
251 $ CALL ZERRVX( PATH, NOUT )
260 CALL XLAENV( 2, NBMIN )
272 DO 170 IMAT = 1, NIMAT
276.NOT.
IF( DOTYPE( IMAT ) )
281.GE..AND..LE.
ZEROT = IMAT3 IMAT6
282.AND..LT.
IF( ZEROT NIMAT-2 )
288 UPLO = UPLOS( IUPLO )
295 CALL ZLATB4( MATPATH, IMAT, N, N, TYPE, KL, KU, ANORM,
296 $ MODE, CNDNUM, DIST )
301 CALL ZLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE,
302 $ CNDNUM, ANORM, KL, KU, UPLO, A, LDA,
308 CALL ALAERH( PATH, 'zlatms', INFO, 0, UPLO, N, N,
309 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
319.EQ.
ELSE IF( IMAT4 ) THEN
329.EQ.
IF( IUPLO1 ) THEN
330 IOFF = ( IZERO-1 )*LDA
331 DO 20 I = 1, IZERO - 1
341 DO 40 I = 1, IZERO - 1
351.EQ.
IF( IUPLO1 ) THEN
384 DO 150 IFACT = 1, NFACT
388 FACT = FACTS( IFACT )
397.EQ.
ELSE IF( IFACT1 ) THEN
401 ANORM = ZLANHE( '1
', UPLO, N, A, LDA, RWORK )
406 CALL ZLACPY( UPLO, N, N, A, LDA, AFAC, LDA )
407 CALL ZHETRF_RK( UPLO, N, AFAC, LDA, E, IWORK, WORK,
412 CALL ZLACPY( UPLO, N, N, AFAC, LDA, AINV, LDA )
413 LWORK = (N+NB+1)*(NB+3)
418 CALL ZHETRI_3( UPLO, N, AINV, LDA, E, IWORK,
419 $ WORK, LWORK, INFO )
420 AINVNM = ZLANHE( '1
', UPLO, N, AINV, LDA, RWORK )
424.LE..OR..LE.
IF( ANORMZERO AINVNMZERO ) THEN
427 RCONDC = ( ONE / ANORM ) / AINVNM
434 CALL ZLARHS( MATPATH, XTYPE, UPLO, ' ', N, N, KL, KU,
435 $ NRHS, A, LDA, XACT, LDA, B, LDA, ISEED,
441.EQ.
IF( IFACT2 ) THEN
442 CALL ZLACPY( UPLO, N, N, A, LDA, AFAC, LDA )
443 CALL ZLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
449 CALL ZHESV_RK( UPLO, N, NRHS, AFAC, LDA, E, IWORK,
450 $ X, LDA, WORK, LWORK, INFO )
458.LT.
IF( IWORK( K )0 ) THEN
459.NE.
IF( IWORK( K )-K ) THEN
463.NE.
ELSE IF( IWORK( K )K ) THEN
472 CALL ALAERH( PATH, 'zhesv_rk', INFO, K, UPLO,
473 $ N, N, -1, -1, NRHS, IMAT, NFAIL,
476.NE.
ELSE IF( INFO0 ) THEN
483 CALL ZHET01_3( UPLO, N, A, LDA, AFAC, LDA, E,
484 $ IWORK, AINV, LDA, RWORK,
489 CALL ZLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
490 CALL ZPOT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK,
491 $ LDA, RWORK, RESULT( 2 ) )
496 CALL ZGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
504.GE.
IF( RESULT( K )THRESH ) THEN
505.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
506 $ CALL ALADHD( NOUT, PATH )
507 WRITE( NOUT, FMT = 9999 )'zhesv_rk', UPLO,
508 $ N, IMAT, K, RESULT( K )
524 CALL ALASVM( PATH, NOUT, NFAIL, NRUN, NERRS )
526 9999 FORMAT( 1X, A, ', uplo=
''', A1, ''', n =
', I5, ',
type ', I2,
527 $ ', test
', I2, ', ratio =
', G12.5 )
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine aladhd(iounit, path)
ALADHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine zhetri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
ZHETRI_3
subroutine zhetrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
ZHETRF_RK computes the factorization of a complex Hermitian indefinite matrix using the bounded Bunch...
subroutine zhesv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, lwork, info)
ZHESV_RK computes the solution to system of linear equations A * X = B for SY matrices
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 zerrvx(path, nunit)
ZERRVX
subroutine zget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
ZGET04
subroutine zpot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
ZPOT02
subroutine zhet01_3(uplo, n, a, lda, afac, ldafac, e, ipiv, c, ldc, rwork, resid)
ZHET01_3
subroutine zdrvhe_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHE_RK
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