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 )
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 alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
double precision function dlansy(NORM, UPLO, N, A, LDA, WORK)
DLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a real symmetric matrix.
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 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 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 dlatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
DLATB4
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
double precision function dget06(RCOND, RCONDC)
DGET06
subroutine dpot05(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT, LDXACT, FERR, BERR, RESLTS)
DPOT05
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