169 $ NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV,
170 $ B, X, XACT, WORK, RWORK, IWORK, NOUT )
180 INTEGER NN, NNB, NNS, NMAX, NOUT
181 DOUBLE PRECISION THRESH
185 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
186 DOUBLE PRECISION A( * ), AFAC( * ), AINV( * ), B( * ),
187 $ rwork( * ), work( * ), x( * ), xact( * )
193 DOUBLE PRECISION ZERO, ONE
194 PARAMETER ( ZERO = 0.0d+0, one = 1.0d+0 )
196 parameter( ntypes = 10 )
198 parameter( ntests = 9 )
202 CHARACTER DIST,
TYPE, UPLO, XTYPE
203 CHARACTER*3 PATH, MATPATH
204 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS,
205 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
206 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
207 DOUBLE PRECISION ANORM, CNDNUM
211 INTEGER ISEED( 4 ), ISEEDY( 4 )
212 DOUBLE PRECISION RESULT( NTESTS )
228 COMMON / infoc / infot, nunit, ok, lerr
229 COMMON / srnamc / srnamt
232 DATA iseedy / 1988, 1989, 1990, 1991 /
233 DATA uplos /
'U',
'L' /
241 path( 1: 1 ) =
'Double precision'
246 matpath( 1: 1 ) =
'Double precision'
247 matpath( 2: 3 ) =
'SY'
252 iseed( i ) = iseedy( i )
258 $
CALL derrsy( path, nout )
270 IF( n .GT. nmax )
THEN
272 WRITE(nout, 9995)
'M ', n, nmax
285 DO 170 imat = 1, nimat
289 IF( .NOT.dotype( imat ) )
294 zerot = imat.GE.3 .AND. imat.LE.6
295 IF( zerot .AND. n.LT.imat-2 )
301 uplo = uplos( iuplo )
309 CALL dlatb4( matpath, imat, n, n,
TYPE, kl, ku,
310 $ anorm, mode, cndnum, dist )
315 CALL dlatms( n, n, dist, iseed,
TYPE, rwork, mode,
316 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
322 CALL alaerh( path,
'DLATMS', info, 0, uplo, n, n, -1,
323 $ -1, -1, imat, nfail, nerrs, nout )
337 ELSE IF( imat.EQ.4 )
THEN
347 IF( iuplo.EQ.1 )
THEN
348 ioff = ( izero-1 )*lda
349 DO 20 i = 1, izero - 1
359 DO 40 i = 1, izero - 1
369 IF( iuplo.EQ.1 )
THEN
416 CALL dlacpy( uplo, n, n, a, lda, afac, lda )
423 srnamt =
'DSYTRF_AA_2STAGE'
424 lwork = min(n*nb, 3*nmax*nmax)
427 $ iwork, iwork( 1+n ),
434 IF( izero.GT.0 )
THEN
440 ELSE IF( iwork( j ).EQ.k )
THEN
454 CALL alaerh( path,
'DSYTRF_AA_2STAGE', info, k,
455 $ uplo, n, n, -1, -1, nb, imat, nfail,
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 )
505 srnamt =
'DSYTRS_AA_2STAGE'
506 lwork = max( 1, 3*n-2 )
508 $ ainv, (3*nb+1)*n, iwork, iwork( 1+n ),
514 IF( izero.EQ.0 )
THEN
515 CALL alaerh( path,
'DSYTRS_AA_2STAGE',
516 $ info, 0, uplo, n, n, -1, -1,
517 $ nrhs, imat, 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 alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine alahd(IOUNIT, PATH)
ALAHD
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 dchksy_aa_2stage(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
DCHKSY_AA_2STAGE
subroutine derrsy(PATH, NUNIT)
DERRSY
subroutine dpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
DPOT02
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 dsytrf_aa_2stage(UPLO, N, A, LDA, TB, LTB, IPIV, IPIV2, WORK, LWORK, INFO)
DSYTRF_AA_2STAGE
subroutine dsytrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
DSYTRS_AA_2STAGE