171 SUBROUTINE dchksy_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 NN, NNB, NNS, NMAX, NOUT
185 DOUBLE PRECISION THRESH
189 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
190 DOUBLE PRECISION A( * ), AFAC( * ), AINV( * ), B( * ),
191 $ rwork( * ), work( * ), x( * ), xact( * )
197 DOUBLE PRECISION ZERO, ONE
198 parameter( zero = 0.0d+0, one = 1.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 )
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 ) =
'Double precision' 250 matpath( 1: 1 ) =
'Double precision' 251 matpath( 2: 3 ) =
'SY' 256 iseed( i ) = iseedy( i )
262 $
CALL derrsy( 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 dlatb4( matpath, imat, n, n,
TYPE, KL, KU,
314 $ anorm, mode, cndnum, dist )
319 CALL dlatms( n, n, dist, iseed,
TYPE, RWORK, MODE,
320 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
326 CALL alaerh( path,
'DLATMS', 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 420 CALL dlacpy( uplo, n, n, a, lda, afac, lda )
428 lwork = max( 1, n*nb + n )
429 CALL dsytrf_aa( uplo, n, afac, lda, iwork, ainv,
455 CALL alaerh( path,
'DSYTRF_AA', info, k, uplo,
456 $ n, n, -1, -1, nb, imat, nfail, nerrs,
463 CALL dsyt01_aa( uplo, n, a, lda, afac, lda, iwork,
464 $ ainv, lda, rwork, result( 1 ) )
472 IF( result( k ).GE.thresh )
THEN 473 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
474 $
CALL alahd( nout, path )
475 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
500 CALL dlarhs( matpath, xtype, uplo,
' ', n, n,
501 $ kl, ku, nrhs, a, lda, xact, lda,
502 $ b, lda, iseed, info )
503 CALL dlacpy(
'Full', n, nrhs, b, lda, x, lda )
506 lwork = max( 1, 3*n-2 )
507 CALL dsytrs_aa( uplo, n, nrhs, afac, lda,
508 $ iwork, x, lda, work, lwork,
514 IF( izero.EQ.0 )
THEN 515 CALL alaerh( path,
'DSYTRS_AA', info, 0,
516 $ uplo, n, n, -1, -1, nrhs, imat,
517 $ nfail, nerrs, nout )
520 CALL dlacpy(
'Full', n, nrhs, b, lda, work, lda
525 CALL dpot02( uplo, n, nrhs, a, lda, x, lda,
526 $ 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 dlacpy(UPLO, M, N, A, LDA, B, LDB)
DLACPY copies all or part of one two-dimensional array to another.
subroutine dlatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
DLATB4
subroutine alahd(IOUNIT, PATH)
ALAHD
subroutine dchksy_aa(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY_AA
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine dlarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
DLARHS
subroutine dlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
DLATMS
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine dsyt01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
DSYT01
subroutine dsytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
DSYTRF_AA
subroutine derrsy(PATH, NUNIT)
DERRSY
subroutine dpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
DPOT02
subroutine dsytrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
DSYTRS_AA
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM