171 SUBROUTINE cchkhe_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
189 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
191 COMPLEX A( * ), AFAC( * ), AINV( * ), B( * ),
192 $ work( * ), x( * ), xact( * )
199 parameter( zero = 0.0e+0 )
201 parameter( czero = ( 0.0e+0, 0.0e+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
218 INTEGER ISEED( 4 ), ISEEDY( 4 )
219 REAL 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' /
249 path( 1: 1 ) =
'Complex precision' 254 matpath( 1: 1 ) =
'Complex precision' 255 matpath( 2: 3 ) =
'HE' 260 iseed( i ) = iseedy( i )
266 $
CALL cerrhe( path, nout )
278 IF( n .GT. nmax )
THEN 280 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 )
311 CALL clatb4( matpath, imat, n, n,
TYPE, KL, KU,
312 $ anorm, mode, cndnum, dist )
317 CALL clatms( n, n, dist, iseed,
TYPE, RWORK, MODE,
318 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
324 CALL alaerh( path,
'CLATMS', info, 0, uplo, n, n, -1,
325 $ -1, -1, imat, nfail, nerrs, nout )
338 ELSE IF( imat.EQ.4 )
THEN 348 IF( iuplo.EQ.1 )
THEN 349 ioff = ( izero-1 )*lda
350 DO 20 i = 1, izero - 1
360 DO 40 i = 1, izero - 1
370 IF( iuplo.EQ.1 )
THEN 406 CALL claipd( n, a, lda+1, 0 )
422 CALL clacpy( uplo, n, n, a, lda, afac, lda )
429 lwork = max( 1, ( nb+1 )*lda )
431 CALL chetrf_aa( uplo, n, afac, lda, iwork, ainv,
457 CALL alaerh( path,
'CHETRF_AA', info, k, uplo,
458 $ n, n, -1, -1, nb, imat, nfail, nerrs,
465 CALL chet01_aa( uplo, n, a, lda, afac, lda, iwork,
466 $ ainv, lda, rwork, result( 1 ) )
474 IF( result( k ).GE.thresh )
THEN 475 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
476 $
CALL alahd( nout, path )
477 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
502 CALL clarhs( matpath, xtype, uplo,
' ', n, n,
503 $ kl, ku, nrhs, a, lda, xact, lda,
504 $ b, lda, iseed, info )
505 CALL clacpy(
'Full', n, nrhs, b, lda, x, lda )
508 lwork = max( 1, 3*n-2 )
509 CALL chetrs_aa( uplo, n, nrhs, afac, lda, iwork,
510 $ x, lda, work, lwork, info )
515 IF( izero.EQ.0 )
THEN 516 CALL alaerh( path,
'CHETRS_AA', info, 0,
517 $ uplo, n, n, -1, -1, nrhs, imat,
518 $ nfail, nerrs, nout )
521 CALL clacpy(
'Full', n, nrhs, b, lda, work, lda
526 CALL cpot02( 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 )
561 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
subroutine alahd(IOUNIT, PATH)
ALAHD
subroutine chetrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
CHETRS_AA
subroutine claipd(N, A, INDA, VINDA)
CLAIPD
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine cpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
CPOT02
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine chet01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
CHET01_AA
subroutine cerrhe(PATH, NUNIT)
CERRHE
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
subroutine chetrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
CHETRF_AA
subroutine clarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
CLARHS
subroutine cchkhe_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
CCHKHE_AA
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
subroutine clatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
CLATB4