153 SUBROUTINE ddrvsy_aa( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
154 $ NMAX, A, AFAC, AINV, B, X, XACT, WORK,
155 $ RWORK, IWORK, NOUT )
164 INTEGER NMAX, NN, NOUT, NRHS
165 DOUBLE PRECISION THRESH
169 INTEGER IWORK( * ), NVAL( * )
170 DOUBLE PRECISION A( * ), AFAC( * ), AINV( * ), B( * ),
171 $ rwork( * ), work( * ), x( * ), xact( * )
177 DOUBLE PRECISION ONE, ZERO
178 parameter( one = 1.0d+0, zero = 0.0d+0 )
179 INTEGER NTYPES, NTESTS
180 parameter( ntypes = 10, ntests = 3 )
182 parameter( nfact = 2 )
186 CHARACTER DIST, FACT,
TYPE, UPLO, XTYPE
187 CHARACTER*3 MATPATH, PATH
188 INTEGER I, I1, I2, IFACT, IMAT, IN, INFO, IOFF, IUPLO,
189 $ izero, j, k, kl, ku, lda, lwork, mode, n,
190 $ nb, nbmin, nerrs, nfail, nimat, nrun, nt
191 DOUBLE PRECISION ANORM, CNDNUM
194 CHARACTER FACTS( nfact ), UPLOS( 2 )
195 INTEGER ISEED( 4 ), ISEEDY( 4 )
196 DOUBLE PRECISION RESULT( ntests )
199 DOUBLE PRECISION DGET06, DLANSY
200 EXTERNAL dget06, dlansy
213 COMMON / infoc / infot, nunit, ok, lerr
214 COMMON / srnamc / srnamt
220 DATA iseedy / 1988, 1989, 1990, 1991 /
221 DATA uplos /
'U',
'L' / , facts /
'F',
'N' /
229 path( 1: 1 ) =
'Double precision' 234 matpath( 1: 1 ) =
'Double precision' 235 matpath( 2: 3 ) =
'SY' 241 iseed( i ) = iseedy( i )
243 lwork = max( 2*nmax, nmax*nrhs )
248 $
CALL derrvx( path, nout )
268 DO 170 imat = 1, nimat
272 IF( .NOT.dotype( imat ) )
277 zerot = imat.GE.3 .AND. imat.LE.6
278 IF( zerot .AND. n.LT.imat-2 )
284 uplo = uplos( iuplo )
289 CALL dlatb4( matpath, imat, n, n,
TYPE, KL, KU, ANORM,
290 $ mode, cndnum, dist )
293 CALL dlatms( n, n, dist, iseed,
TYPE, RWORK, MODE,
294 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
300 CALL alaerh( path,
'DLATMS', info, 0, uplo, n, n, -1,
301 $ -1, -1, imat, nfail, nerrs, nout )
311 ELSE IF( imat.EQ.4 )
THEN 321 IF( iuplo.EQ.1 )
THEN 322 ioff = ( izero-1 )*lda
323 DO 20 i = 1, izero - 1
333 DO 40 i = 1, izero - 1
344 IF( iuplo.EQ.1 )
THEN 373 DO 150 ifact = 1, nfact
377 fact = facts( ifact )
382 CALL dlarhs( matpath, xtype, uplo,
' ', n, n, kl, ku,
383 $ nrhs, a, lda, xact, lda, b, lda, iseed,
389 IF( ifact.EQ.2 )
THEN 390 CALL dlacpy( uplo, n, n, a, lda, afac, lda )
391 CALL dlacpy(
'Full', n, nrhs, b, lda, x, lda )
396 CALL dsysv_aa( uplo, n, nrhs, afac, lda, iwork,
397 $ x, lda, work, lwork, info )
402 IF( izero.GT.0 )
THEN 408 ELSE IF( iwork( j ).EQ.k )
THEN 422 CALL alaerh( path,
'DSYSV_AA ', info, k,
423 $ uplo, n, n, -1, -1, nrhs,
424 $ imat, nfail, nerrs, nout )
426 ELSE IF( info.NE.0 )
THEN 433 CALL dsyt01_aa( uplo, n, a, lda, afac, lda,
434 $ iwork, ainv, lda, rwork,
439 CALL dlacpy(
'Full', n, nrhs, b, lda, work, lda )
440 CALL dpot02( uplo, n, nrhs, a, lda, x, lda, work,
441 $ lda, rwork, result( 2 ) )
448 IF( result( k ).GE.thresh )
THEN 449 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
450 $
CALL aladhd( nout, path )
451 WRITE( nout, fmt = 9999 )
'DSYSV_AA ',
452 $ uplo, n, imat, k, result( k )
468 CALL alasvm( path, nout, nfail, nrun, nerrs )
470 9999
FORMAT( 1x, a,
', UPLO=''', a1,
''', N =', i5,
', type ', i2,
471 $
', test ', i2,
', ratio =', g12.5 )
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 alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine dsysv_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
DSYSV_AA computes the solution to system of linear equations A * X = B for SY matrices ...
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 dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine dsyt01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
DSYT01
subroutine dget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
DGET04
subroutine dsytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
DSYTRF_AA
subroutine aladhd(IOUNIT, PATH)
ALADHD
subroutine derrvx(PATH, NUNIT)
DERRVX
subroutine dpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
DPOT02
subroutine ddrvsy_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DDRVSY_AA