238 SUBROUTINE cdrvrfp( NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL,
239 + THRESH, A, ASAV, AFAC, AINV, B,
240 + BSAV, XACT, X, ARF, ARFINV,
241 + C_WORK_CLATMS, C_WORK_CPOT02,
242 + C_WORK_CPOT03, S_WORK_CLATMS, S_WORK_CLANHE,
243 + S_WORK_CPOT01, S_WORK_CPOT02, S_WORK_CPOT03 )
250 INTEGER NN, NNS, NNT, NOUT
254 INTEGER NVAL( NN ), NSVAL( NNS ), NTVAL( NNT )
265 COMPLEX C_WORK_CLATMS( * )
266 COMPLEX C_WORK_CPOT02( * )
267 COMPLEX C_WORK_CPOT03( * )
268 REAL S_WORK_CLATMS( * )
269 REAL S_WORK_CLANHE( * )
270 REAL S_WORK_CPOT01( * )
271 REAL S_WORK_CPOT02( * )
272 REAL S_WORK_CPOT03( * )
279 PARAMETER ( ONE = 1.0e+0, zero = 0.0e+0 )
281 PARAMETER ( NTESTS = 4 )
285 INTEGER I, INFO, IUPLO, LDA, LDB, IMAT, NERRS, NFAIL,
286 + nrhs, nrun, izero, ioff, k, nt, n, iform, iin,
288 CHARACTER DIST, CTYPE, UPLO, CFORM
290 REAL ANORM, AINVNM, CNDNUM, RCONDC
293 CHARACTER UPLOS( 2 ), FORMS( 2 )
294 INTEGER ISEED( 4 ), ISEEDY( 4 )
295 REAL RESULT( NTESTS )
311 COMMON / SRNAMC / SRNAMT
314 DATA iseedy / 1988, 1989, 1990, 1991 /
315 DATA uplos /
'U',
'L' /
316 DATA forms /
'N',
'C' /
326 iseed( i ) = iseedy( i )
345 IF( n.EQ.0 .AND. iit.GE.1 )
GO TO 120
349 IF( imat.EQ.4 .AND. n.LE.1 )
GO TO 120
350 IF( imat.EQ.5 .AND. n.LE.2 )
GO TO 120
355 uplo = uplos( iuplo )
360 cform = forms( iform )
365 CALL clatb4(
'CPO', imat, n, n, ctype, kl, ku,
366 + anorm, mode, cndnum, dist )
369 CALL clatms( n, n, dist, iseed, ctype,
371 + mode, cndnum, anorm, kl, ku, uplo, a,
372 + lda, c_work_clatms, info )
377 CALL alaerh(
'CPF',
'CLATMS', info, 0, uplo, n,
378 + n, -1, -1, -1, iit, nfail, nerrs,
386 zerot = imat.GE.3 .AND. imat.LE.5
390 ELSE IF( iit.EQ.4 )
THEN
395 ioff = ( izero-1 )*lda
399 IF( iuplo.EQ.1 )
THEN
400 DO 20 i = 1, izero - 1
410 DO 40 i = 1, izero - 1
425 CALL claipd( n, a, lda+1, 0 )
429 CALL clacpy( uplo, n, n, a, lda, asav, lda )
439 anorm = clanhe(
'1', uplo, n, a, lda,
444 CALL cpotrf( uplo, n, a, lda, info )
448 CALL cpotri( uplo, n, a, lda, info )
454 ainvnm = clanhe(
'1', uplo, n, a, lda,
456 rcondc = ( one / anorm ) / ainvnm
460 CALL clacpy( uplo, n, n, asav, lda, a, lda )
468 CALL clarhs(
'CPO',
'N', uplo,
' ', n, n, kl, ku,
469 + nrhs, a, lda, xact, lda, b, lda,
471 CALL clacpy(
'Full', n, nrhs, b, lda, bsav, lda )
476 CALL clacpy( uplo, n, n, a, lda, afac, lda )
477 CALL clacpy(
'Full', n, nrhs, b, ldb, x, ldb )
480 CALL ctrttf( cform, uplo, n, afac, lda, arf, info )
482 CALL cpftrf( cform, uplo, n, arf, info )
486 IF( info.NE.izero )
THEN
492 CALL alaerh(
'CPF',
'CPFSV ', info, izero,
493 + uplo, n, n, -1, -1, nrhs, iit,
494 + nfail, nerrs, nout )
505 CALL cpftrs( cform, uplo, n, nrhs, arf, x, ldb,
509 CALL ctfttr( cform, uplo, n, arf, afac, lda, info )
514 CALL clacpy( uplo, n, n, afac, lda, asav, lda )
515 CALL cpot01( uplo, n, a, lda, afac, lda,
516 + s_work_cpot01, result( 1 ) )
517 CALL clacpy( uplo, n, n, asav, lda, afac, lda )
521 IF(mod(n,2).EQ.0)
THEN
522 CALL clacpy(
'A', n+1, n/2, arf, n+1, arfinv,
525 CALL clacpy(
'A', n, (n+1)/2, arf, n, arfinv,
530 CALL cpftri( cform, uplo, n, arfinv , info )
533 CALL ctfttr( cform, uplo, n, arfinv, ainv, lda,
539 +
CALL alaerh(
'CPO',
'CPFTRI', info, 0, uplo, n,
540 + n, -1, -1, -1, imat, nfail, nerrs,
543 CALL cpot03( uplo, n, a, lda, ainv, lda,
544 + c_work_cpot03, lda, s_work_cpot03,
545 + rcondc, result( 2 ) )
549 CALL clacpy(
'Full', n, nrhs, b, lda,
550 + c_work_cpot02, lda )
551 CALL cpot02( uplo, n, nrhs, a, lda, x, lda,
552 + c_work_cpot02, lda, s_work_cpot02,
557 CALL cget04( n, nrhs, x, lda, xact, lda, rcondc,
565 IF( result( k ).GE.thresh )
THEN
566 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
567 +
CALL aladhd( nout,
'CPF' )
568 WRITE( nout, fmt = 9999 )
'CPFSV ', uplo,
569 + n, iit, k, result( k )
582 CALL alasvm(
'CPF', nout, nfail, nrun, nerrs )
584 9999
FORMAT( 1x, a6,
', UPLO=''', a1,
''', N =', i5,
', type ', i1,
585 +
', test(', i1,
')=', g12.5 )
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine clarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
CLARHS
subroutine aladhd(iounit, path)
ALADHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine cdrvrfp(nout, nn, nval, nns, nsval, nnt, ntval, thresh, a, asav, afac, ainv, b, bsav, xact, x, arf, arfinv, c_work_clatms, c_work_cpot02, c_work_cpot03, s_work_clatms, s_work_clanhe, s_work_cpot01, s_work_cpot02, s_work_cpot03)
CDRVRFP
subroutine cget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
CGET04
subroutine claipd(n, a, inda, vinda)
CLAIPD
subroutine clatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
CLATB4
subroutine clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS
subroutine cpot01(uplo, n, a, lda, afac, ldafac, rwork, resid)
CPOT01
subroutine cpot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
CPOT02
subroutine cpot03(uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)
CPOT03
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine cpftrf(transr, uplo, n, a, info)
CPFTRF
subroutine cpftri(transr, uplo, n, a, info)
CPFTRI
subroutine cpftrs(transr, uplo, n, nrhs, a, b, ldb, info)
CPFTRS
subroutine cpotrf(uplo, n, a, lda, info)
CPOTRF
subroutine cpotri(uplo, n, a, lda, info)
CPOTRI
subroutine ctfttr(transr, uplo, n, arf, a, lda, info)
CTFTTR copies a triangular matrix from the rectangular full packed format (TF) to the standard full f...
subroutine ctrttf(transr, uplo, n, a, lda, arf, info)
CTRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...