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, , UPLO, CFORM
283 REAL ANORM, AINVNM, CNDNUM, RCONDC
286 CHARACTER UPLOS( 2 ), FORMS( 2 )
287 INTEGER ISEED( 4 ), ( 4 )
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.GE.
IF( RESULT( K )THRESH ) THEN
554.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
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 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