184 INTEGER nn, nnb, nns, nmax, nout
189 INTEGER iwork( * ), nbval( * ), nsval( * ), nval( * )
190 REAL a( * ), afac( * ), ainv( * ), b( * ),
191 $ rwork( * ), work( * ), x( * ), xact( * )
198 parameter ( zero = 0.0e+0 )
200 parameter ( ntypes = 10 )
202 parameter ( ntests = 9 )
206 CHARACTER dist,
TYPE, uplo, xtype
207 CHARACTER*3 path, matpath
208 INTEGER i, i1, i2, imat, in, inb, info, ioff, irhs,
209 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
210 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
215 INTEGER iseed( 4 ), iseedy( 4 )
216 REAL result( ntests )
237 COMMON / infoc / infot, nunit, ok, lerr
238 COMMON / srnamc / srnamt
241 DATA iseedy / 1988, 1989, 1990, 1991 /
242 DATA uplos /
'U',
'L' /
251 path( 1: 1 ) =
'Single precision'
256 matpath( 1: 1 ) =
'Single precision'
257 matpath( 2: 3 ) =
'SY'
262 iseed( i ) = iseedy( i )
268 $
CALL serrsy( path, nout )
280 IF( n .GT. nmax )
THEN
282 WRITE(nout, 9995)
'M ', n, nmax
295 DO 170 imat = 1, nimat
299 IF( .NOT.dotype( imat ) )
304 zerot = imat.GE.3 .AND. imat.LE.6
305 IF( zerot .AND. n.LT.imat-2 )
311 uplo = uplos( iuplo )
319 CALL slatb4( matpath, imat, n, n,
TYPE, kl, ku,
320 $ anorm, mode, cndnum, dist )
325 CALL slatms( n, n, dist, iseed,
TYPE, rwork, mode,
326 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
332 CALL alaerh( path,
'SLATMS', info, 0, uplo, n, n, -1,
333 $ -1, -1, imat, nfail, nerrs, nout )
347 ELSE IF( imat.EQ.4 )
THEN
357 IF( iuplo.EQ.1 )
THEN
358 ioff = ( izero-1 )*lda
359 DO 20 i = 1, izero - 1
369 DO 40 i = 1, izero - 1
379 IF( iuplo.EQ.1 )
THEN
426 CALL slacpy( uplo, n, n, a, lda, afac, lda )
434 lwork = max( 1, n*nb + n )
435 CALL ssytrf_aa( uplo, n, afac, lda, iwork, ainv,
441 IF( izero.GT.0 )
THEN
447 ELSE IF( iwork( j ).EQ.k )
THEN
461 CALL alaerh( path,
'SSYTRF_AA', info, k, uplo,
462 $ n, n, -1, -1, nb, imat, nfail, nerrs,
469 CALL ssyt01_aa( uplo, n, a, lda, afac, lda, iwork,
470 $ ainv, lda, rwork, result( 1 ) )
478 IF( result( k ).GE.thresh )
THEN
479 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
480 $
CALL alahd( nout, path )
481 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
506 CALL slarhs( matpath, xtype, uplo,
' ', n, n,
507 $ kl, ku, nrhs, a, lda, xact, lda,
508 $ b, lda, iseed, info )
509 CALL slacpy(
'Full', n, nrhs, b, lda, x, lda )
512 lwork = max( 1, 3*n-2 )
513 CALL ssytrs_aa( uplo, n, nrhs, afac, lda,
514 $ iwork, x, lda, work, lwork,
520 CALL alaerh( path,
'SSYTRS_AA', info, 0,
521 $ uplo, n, n, -1, -1, nrhs, imat,
522 $ nfail, nerrs, nout )
525 CALL slacpy(
'Full', n, nrhs, b, lda, work, lda )
529 CALL spot02( uplo, n, nrhs, a, lda, x, lda, work,
530 $ lda, rwork, result( 2 ) )
537 IF( result( k ).GE.thresh )
THEN
538 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
539 $
CALL alahd( nout, path )
540 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
541 $ imat, k, result( k )
558 CALL alasum( path, nout, nfail, nrun, nerrs )
560 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
561 $ i2,
', test ', i2,
', ratio =', g12.5 )
562 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
563 $ i2,
', test(', i2,
') =', g12.5 )
564 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
subroutine alahd(IOUNIT, PATH)
ALAHD
subroutine ssytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
SSYTRF_AA
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine slatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
SLATB4
subroutine ssyt01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
SSYT01_AA
subroutine dsytri2(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
DSYTRI2
subroutine slarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
SLARHS
subroutine dsycon(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, IWORK, INFO)
DSYCON
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine slatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
SLATMS
subroutine dpot03(UPLO, N, A, LDA, AINV, LDAINV, WORK, LDWORK, RWORK, RCOND, RESID)
DPOT03
subroutine sget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
SGET04
double precision function dget06(RCOND, RCONDC)
DGET06
subroutine serrsy(PATH, NUNIT)
SERRSY
subroutine dpot05(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT, LDXACT, FERR, BERR, RESLTS)
DPOT05
subroutine spot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
SPOT02
subroutine ssytrs_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
SSYTRS_AA
subroutine slacpy(UPLO, M, N, A, LDA, B, LDB)
SLACPY copies all or part of one two-dimensional array to another.
subroutine ssyrfs(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO)
SSYRFS
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
real function slansy(NORM, UPLO, N, A, LDA, WORK)
SLANSY 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.