151 $ NMAX, A, AFAC, AINV, B, X, XACT, WORK,
152 $ RWORK, IWORK, NOUT )
160 INTEGER NMAX, NN, NOUT, NRHS
165 INTEGER IWORK( * ), NVAL( * )
166 REAL A( * ), AFAC( * ), AINV( * ), ( * ),
167 $ rwork( * ), work( * ), x( * ), xact( * )
174 PARAMETER ( ONE = 1.0e+0, zero = 0.0e+0 )
175 INTEGER NTYPES, NTESTS
176 parameter( ntypes = 10, ntests = 3 )
178 parameter( nfact = 2 )
182 CHARACTER DIST, FACT,
TYPE, UPLO, XTYPE
183 CHARACTER*3 PATH, MATPATH
184 INTEGER , I1, I2, IFACT, IMAT, IN, INFO, IOFF, IUPLO,
185 $ izero, j, k, kl, ku, lda, lwork, mode, n,
186 $ nb, nbmin, nerrs, nfail, nimat, nrun, nt
187 REAL AINVNM, ANORM, CNDNUM,
190 CHARACTER FACTS( NFACT ), UPLOS( 2 )
191 INTEGER ISEED( 4 ), ISEEDY( 4 )
192 REAL RESULT( NTESTS )
211 COMMON / infoc / infot, nunit, ok, lerr
212 COMMON / srnamc / srnamt
218 DATA iseedy / 1988, 1989, 1990, 1991 /
219 DATA uplos / 'u
', 'l
' / , FACTS / 'f
', 'n
' /
227 PATH( 1: 1 ) = 'single precision
'
232 MATPATH( 1: 1 ) = 'single precision
'
233 MATPATH( 2: 3 ) = 'sy
'
239 ISEED( I ) = ISEEDY( I )
241 LWORK = MAX( 2*NMAX, NMAX*NRHS )
246 $ CALL SERRVX( PATH, NOUT )
255 CALL XLAENV( 2, NBMIN )
267 DO 170 IMAT = 1, NIMAT
271.NOT.
IF( DOTYPE( IMAT ) )
276.GE..AND..LE.
ZEROT = IMAT3 IMAT6
277.AND..LT.
IF( ZEROT NIMAT-2 )
283 UPLO = UPLOS( IUPLO )
290 CALL SLATB4( MATPATH, IMAT, N, N, TYPE, KL, KU, ANORM,
291 $ MODE, CNDNUM, DIST )
296 CALL SLATMS( N, N, DIST, ISEED, TYPE, RWORK, MODE,
297 $ CNDNUM, ANORM, KL, KU, UPLO, A, LDA, WORK,
303 CALL ALAERH( PATH, 'slatms', INFO, 0, UPLO, N, N, -1,
304 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
317.EQ.
ELSE IF( IMAT4 ) THEN
327.EQ.
IF( IUPLO1 ) THEN
328 IOFF = ( IZERO-1 )*LDA
329 DO 20 I = 1, IZERO - 1
339 DO 40 I = 1, IZERO - 1
350.EQ.
IF( IUPLO1 ) THEN
380 DO 150 IFACT = 1, NFACT
384 FACT = FACTS( IFACT )
394.EQ.
ELSE IF( IFACT1 ) THEN
398 ANORM = SLANSY( '1
', UPLO, N, A, LDA, RWORK )
402 CALL SLACPY( UPLO, N, N, A, LDA, AFAC, LDA )
403 CALL SSYTRF_ROOK( UPLO, N, AFAC, LDA, IWORK, WORK,
408 CALL SLACPY( UPLO, N, N, AFAC, LDA, AINV, LDA )
409 LWORK = (N+NB+1)*(NB+3)
410 CALL SSYTRI_ROOK( UPLO, N, AINV, LDA, IWORK,
412 AINVNM = SLANSY( '1
', UPLO, N, AINV, LDA, RWORK )
416.LE..OR..LE.
IF( ANORMZERO AINVNMZERO ) THEN
419 RCONDC = ( ONE / ANORM ) / AINVNM
426 CALL SLARHS( MATPATH, XTYPE, UPLO, ' ', N, N, KL, KU,
427 $ NRHS, A, LDA, XACT, LDA, B, LDA, ISEED,
433.EQ.
IF( IFACT2 ) THEN
434 CALL SLACPY( UPLO, N, N, A, LDA, AFAC, LDA )
435 CALL SLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
441 CALL SSYSV_ROOK( UPLO, N, NRHS, AFAC, LDA, IWORK,
442 $ X, LDA, WORK, LWORK, INFO )
450.LT.
IF( IWORK( K )0 ) THEN
451.NE.
IF( IWORK( K )-K ) THEN
455.NE.
ELSE IF( IWORK( K )K ) THEN
464 CALL ALAERH( PATH, 'ssysv_rook', INFO, K, UPLO,
465 $ N, N, -1, -1, NRHS, IMAT, NFAIL,
468.NE.
ELSE IF( INFO0 ) THEN
475 CALL SSYT01_ROOK( UPLO, N, A, LDA, AFAC, LDA,
476 $ IWORK, AINV, LDA, RWORK,
481 CALL SLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
482 CALL SPOT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK,
483 $ LDA, RWORK, RESULT( 2 ) )
488 CALL SGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
496.GE.
IF( RESULT( K )THRESH ) THEN
497.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
498 $ CALL ALADHD( NOUT, PATH )
500 $ N, IMAT, K, RESULT( K )
516 CALL ALASVM( PATH, NOUT, NFAIL, NRUN, NERRS )
518 9999 FORMAT( 1X, A, ', uplo=
''', A1, ''', n =
', I5, ',
type ', I2,
519 $ ', test
', I2, ', ratio =
', G12.5 )
subroutine slaset(uplo, m, n, alpha, beta, a, lda)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine aladhd(iounit, path)
ALADHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine sdrvsy_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
SDRVSY_ROOK
subroutine ssytrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
SSYTRF_ROOK
subroutine ssytri_rook(uplo, n, a, lda, ipiv, work, info)
SSYTRI_ROOK
subroutine ssysv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info)
SSYSV_ROOK computes the solution to system of linear equations A * X = B for SY matrices
subroutine slatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
SLATMS
subroutine slarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
SLARHS
subroutine spot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
SPOT02
subroutine serrvx(path, nunit)
SERRVX
subroutine spot05(uplo, n, nrhs, a, lda, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
SPOT05
subroutine ssyt01_rook(uplo, n, a, lda, afac, ldafac, ipiv, c, ldc, rwork, resid)
SSYT01_ROOK
subroutine sget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
SGET04
subroutine slatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
SLATB4