232 SUBROUTINE sdrvrfp( NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL,
233 + THRESH, A, ASAV, AFAC, AINV, B,
234 + BSAV, XACT, X, ARF, ARFINV,
235 + S_WORK_SLATMS, S_WORK_SPOT01, S_TEMP_SPOT02,
236 + S_TEMP_SPOT03, S_WORK_SLANSY,
237 + S_WORK_SPOT02, S_WORK_SPOT03 )
244 INTEGER NN, NNS, NNT, NOUT
248 INTEGER NVAL( NN ), NSVAL( NNS ), NTVAL( NNT )
259 REAL S_WORK_SLATMS( * )
260 REAL S_WORK_SPOT01( * )
261 REAL S_TEMP_SPOT02( * )
262 REAL S_TEMP_SPOT03( * )
263 REAL S_WORK_SLANSY( * )
264 REAL S_WORK_SPOT02( * )
265 REAL S_WORK_SPOT03( * )
272 PARAMETER ( ONE = 1.0e+0, zero = 0.0e+0 )
274 PARAMETER ( NTESTS = 4 )
278 INTEGER I, INFO, IUPLO, LDA, LDB, IMAT, NERRS, NFAIL,
279 + nrhs, nrun, izero, ioff, k, nt, n, iform, iin,
281 CHARACTER DIST, CTYPE, UPLO, CFORM
283 REAL ANORM, AINVNM, CNDNUM, RCONDC
286 CHARACTER UPLOS( 2 ), FORMS( 2 )
287 INTEGER ISEED( 4 ), ISEEDY( 4 )
288 REAL RESULT( NTESTS )
303 COMMON / SRNAMC / SRNAMT
306 DATA iseedy / 1988, 1989, 1990, 1991 /
307 DATA uplos /
'U',
'L' /
308 DATA forms /
'N',
'T' /
318 iseed( i ) = iseedy( i )
337 IF( n.EQ.0 .AND. iit.GE.1 )
GO TO 120
341 IF( imat.EQ.4 .AND. n.LE.1 )
GO TO 120
342 IF( imat.EQ.5 .AND. n.LE.2 )
GO TO 120
347 uplo = uplos( iuplo )
352 cform = forms( iform )
357 CALL slatb4(
'SPO', imat, n, n, ctype, kl, ku,
358 + anorm, mode, cndnum, dist )
361 CALL slatms( n, n, dist, iseed, ctype,
363 + mode, cndnum, anorm, kl, ku, uplo, a,
364 + lda, s_work_slatms, info )
369 CALL alaerh(
'SPF',
'SLATMS', info, 0, uplo, n,
370 + n, -1, -1, -1, iit, nfail, nerrs,
378 zerot = imat.GE.3 .AND. imat.LE.5
382 ELSE IF( iit.EQ.4 )
THEN
387 ioff = ( izero-1 )*lda
391 IF( iuplo.EQ.1 )
THEN
392 DO 20 i = 1, izero - 1
402 DO 40 i = 1, izero - 1
417 CALL slacpy( uplo, n, n, a, lda, asav, lda )
427 anorm = slansy(
'1', uplo, n, a, lda,
432 CALL spotrf( uplo, n, a, lda, info )
436 CALL spotri( uplo, n, a, lda, info )
442 ainvnm = slansy(
'1', uplo, n, a, lda,
444 rcondc = ( one / anorm ) / ainvnm
448 CALL slacpy( uplo, n, n, asav, lda, a, lda )
456 CALL slarhs(
'SPO',
'N', uplo,
' ', n, n, kl, ku,
457 + nrhs, a, lda, xact, lda, b, lda,
459 CALL slacpy(
'Full', n, nrhs, b, lda, bsav, lda )
464 CALL slacpy( uplo, n, n, a, lda, afac, lda )
465 CALL slacpy(
'Full', n, nrhs, b, ldb, x, ldb )
468 CALL strttf( cform, uplo, n, afac, lda, arf, info )
470 CALL spftrf( cform, uplo, n, arf, info )
474 IF( info.NE.izero )
THEN
480 CALL alaerh(
'SPF',
'SPFSV ', info, izero,
481 + uplo, n, n, -1, -1, nrhs, iit,
482 + nfail, nerrs, nout )
493 CALL spftrs( cform, uplo, n, nrhs, arf, x, ldb,
497 CALL stfttr( cform, uplo, n, arf, afac, lda, info )
502 CALL slacpy( uplo, n, n, afac, lda, asav, lda )
503 CALL spot01( uplo, n, a, lda, afac, lda,
504 + s_work_spot01, result( 1 ) )
505 CALL slacpy( uplo, n, n, asav, lda, afac, lda )
509 IF(mod(n,2).EQ.0)
THEN
510 CALL slacpy(
'A', n+1, n/2, arf, n+1, arfinv,
513 CALL slacpy(
'A', n, (n+1)/2, arf, n, arfinv,
518 CALL spftri( cform, uplo, n, arfinv , info )
521 CALL stfttr( cform, uplo, n, arfinv, ainv, lda,
527 +
CALL alaerh(
'SPO',
'SPFTRI', info, 0, uplo, n,
528 + n, -1, -1, -1, imat, nfail, nerrs,
531 CALL spot03( uplo, n, a, lda, ainv, lda,
532 + s_temp_spot03, lda, s_work_spot03,
533 + rcondc, result( 2 ) )
537 CALL slacpy(
'Full', n, nrhs, b, lda,
538 + s_temp_spot02, lda )
539 CALL spot02( uplo, n, nrhs, a, lda, x, lda,
540 + s_temp_spot02, lda, s_work_spot02,
545 CALL sget04( n, nrhs, x, lda, xact, lda, rcondc,
553 IF( result( k ).GE.thresh )
THEN
554 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
555 +
CALL aladhd( nout,
'SPF' )
556 WRITE( nout, fmt = 9999 )
'SPFSV ', uplo,
557 + n, iit, k, result( k )
570 CALL alasvm(
'SPF', nout, nfail, nrun, nerrs )
572 9999
FORMAT( 1x, a6,
', UPLO=''', a1,
''', N =', i5,
', type ', i1,
573 +
', test(', i1,
')=', g12.5 )
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine slarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
SLARHS
subroutine aladhd(iounit, path)
ALADHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.
subroutine spftrf(transr, uplo, n, a, info)
SPFTRF
subroutine spftri(transr, uplo, n, a, info)
SPFTRI
subroutine spftrs(transr, uplo, n, nrhs, a, b, ldb, info)
SPFTRS
subroutine spotrf(uplo, n, a, lda, info)
SPOTRF
subroutine spotri(uplo, n, a, lda, info)
SPOTRI
subroutine stfttr(transr, uplo, n, arf, a, lda, info)
STFTTR copies a triangular matrix from the rectangular full packed format (TF) to the standard full f...
subroutine strttf(transr, uplo, n, a, lda, arf, info)
STRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...
subroutine sdrvrfp(nout, nn, nval, nns, nsval, nnt, ntval, thresh, a, asav, afac, ainv, b, bsav, xact, x, arf, arfinv, s_work_slatms, s_work_spot01, s_temp_spot02, s_temp_spot03, s_work_slansy, s_work_spot02, s_work_spot03)
SDRVRFP
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
subroutine slatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
SLATMS
subroutine spot01(uplo, n, a, lda, afac, ldafac, rwork, resid)
SPOT01
subroutine spot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
SPOT02
subroutine spot03(uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)
SPOT03