167 SUBROUTINE dchksy_aa( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
168 $ THRESH, TSTERR, NMAX, A, AFAC, AINV, B,
169 $ X, XACT, WORK, RWORK, IWORK, NOUT )
179 INTEGER NN, NNB, NNS, NMAX, NOUT
180 DOUBLE PRECISION THRESH
184 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
185 DOUBLE PRECISION A( * ), AFAC( * ), AINV( * ), B( * ),
186 $ rwork( * ), work( * ), x( * ), xact( * )
192 DOUBLE PRECISION ZERO, ONE
193 PARAMETER ( ZERO = 0.0d+0, one = 1.0d+0 )
195 parameter( ntypes = 10 )
197 parameter( ntests = 9 )
201 CHARACTER DIST,
TYPE, UPLO, XTYPE
202 CHARACTER*3 PATH, MATPATH
203 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS,
204 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
205 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
206 DOUBLE PRECISION ANORM, CNDNUM
210 INTEGER ISEED( 4 ), ISEEDY( 4 )
211 DOUBLE PRECISION RESULT( NTESTS )
227 COMMON / infoc / infot, nunit, ok, lerr
228 COMMON / srnamc / srnamt
231 DATA iseedy / 1988, 1989, 1990, 1991 /
232 DATA uplos /
'U',
'L' /
240 path( 1: 1 ) =
'Double precision'
245 matpath( 1: 1 ) =
'Double precision'
246 matpath( 2: 3 ) =
'SY'
251 iseed( i ) = iseedy( i )
257 $
CALL derrsy( path, nout )
269 IF( n .GT. nmax )
THEN
271 WRITE(nout, 9995)
'M ', n, nmax
284 DO 170 imat = 1, nimat
288 IF( .NOT.dotype( imat ) )
293 zerot = imat.GE.3 .AND. imat.LE.6
294 IF( zerot .AND. n.LT.imat-2 )
300 uplo = uplos( iuplo )
308 CALL dlatb4( matpath, imat, n, n,
TYPE, kl, ku,
309 $ anorm, mode, cndnum, dist )
314 CALL dlatms( n, n, dist, iseed,
TYPE, rwork, mode,
315 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
321 CALL alaerh( path,
'DLATMS', info, 0, uplo, n, n, -1,
322 $ -1, -1, imat, nfail, nerrs, nout )
336 ELSE IF( imat.EQ.4 )
THEN
346 IF( iuplo.EQ.1 )
THEN
347 ioff = ( izero-1 )*lda
348 DO 20 i = 1, izero - 1
358 DO 40 i = 1, izero - 1
368 IF( iuplo.EQ.1 )
THEN
415 CALL dlacpy( uplo, n, n, a, lda, afac, lda )
423 lwork = max( 1, n*nb + n )
424 CALL dsytrf_aa( uplo, n, afac, lda, iwork, ainv,
450 CALL alaerh( path,
'DSYTRF_AA', info, k, uplo,
451 $ n, n, -1, -1, nb, imat, nfail, nerrs,
458 CALL dsyt01_aa( uplo, n, a, lda, afac, lda, iwork,
459 $ ainv, lda, rwork, result( 1 ) )
467 IF( result( k ).GE.thresh )
THEN
468 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
469 $
CALL alahd( nout, path )
470 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
495 CALL dlarhs( matpath, xtype, uplo,
' ', n, n,
496 $ kl, ku, nrhs, a, lda, xact, lda,
497 $ b, lda, iseed, info )
498 CALL dlacpy(
'Full', n, nrhs, b, lda, x, lda )
501 lwork = max( 1, 3*n-2 )
502 CALL dsytrs_aa( uplo, n, nrhs, afac, lda,
503 $ iwork, x, lda, work, lwork,
509 IF( izero.EQ.0 )
THEN
510 CALL alaerh( path,
'DSYTRS_AA', info, 0,
511 $ uplo, n, n, -1, -1, nrhs, imat,
512 $ nfail, nerrs, nout )
515 CALL dlacpy(
'Full', n, nrhs, b, lda, work, lda
520 CALL dpot02( uplo, n, nrhs, a, lda, x, lda,
521 $ work, lda, rwork, result( 2 ) )
528 IF( result( k ).GE.thresh )
THEN
529 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
530 $
CALL alahd( nout, path )
531 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
532 $ imat, k, result( k )
550 CALL alasum( path, nout, nfail, nrun, nerrs )
552 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
553 $ i2,
', test ', i2,
', ratio =', g12.5 )
554 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
555 $ i2,
', test(', i2,
') =', g12.5 )
556 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine dlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
DLARHS
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
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 derrsy(path, nunit)
DERRSY
subroutine dlatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
DLATB4
subroutine dlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
DLATMS
subroutine dpot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
DPOT02
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 dsytrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info)
DSYTRS_AA
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.