240 SUBROUTINE cdrvrfp( NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL,
241 + thresh, a, asav, afac, ainv, b,
242 + bsav, xact, x, arf, arfinv,
243 + c_work_clatms, c_work_cpot02,
244 + c_work_cpot03, s_work_clatms, s_work_clanhe,
245 + s_work_cpot01, s_work_cpot02, s_work_cpot03 )
253 INTEGER nn, nns, nnt, nout
257 INTEGER nval( nn ), nsval( nns ), ntval( nnt )
268 COMPLEX c_work_clatms( * )
269 COMPLEX c_work_cpot02( * )
270 COMPLEX c_work_cpot03( * )
271 REAL s_work_clatms( * )
272 REAL s_work_clanhe( * )
273 REAL s_work_cpot01( * )
274 REAL s_work_cpot02( * )
275 REAL s_work_cpot03( * )
282 parameter( one = 1.0e+0, zero = 0.0e+0 )
284 parameter( ntests = 4 )
288 INTEGER i, info, iuplo, lda, ldb, imat, nerrs, nfail,
289 + nrhs, nrun, izero, ioff, k, nt, n, iform, iin,
291 CHARACTER dist, ctype, uplo, cform
293 REAL anorm, ainvnm, cndnum, rcondc
296 CHARACTER uplos( 2 ), forms( 2 )
297 INTEGER iseed( 4 ), iseedy( 4 )
298 REAL result( ntests )
314 common / srnamc / srnamt
317 DATA iseedy / 1988, 1989, 1990, 1991 /
318 DATA uplos /
'U',
'L' /
319 DATA forms /
'N',
'C' /
329 iseed( i ) = iseedy( i )
348 IF( n.EQ.0 .AND. iit.GT.1 ) go to 120
352 IF( imat.EQ.4 .AND. n.LE.1 ) go to 120
353 IF( imat.EQ.5 .AND. n.LE.2 ) go to 120
358 uplo = uplos( iuplo )
363 cform = forms( iform )
368 CALL
clatb4(
'CPO', imat, n, n, ctype, kl, ku,
369 + anorm, mode, cndnum, dist )
372 CALL
clatms( n, n, dist, iseed, ctype,
374 + mode, cndnum, anorm, kl, ku, uplo, a,
375 + lda, c_work_clatms, info )
380 CALL
alaerh(
'CPF',
'CLATMS', info, 0, uplo, n,
381 + n, -1, -1, -1, iit, nfail, nerrs,
389 zerot = imat.GE.3 .AND. imat.LE.5
393 ELSE IF( iit.EQ.4 )
THEN
398 ioff = ( izero-1 )*lda
402 IF( iuplo.EQ.1 )
THEN
403 DO 20 i = 1, izero - 1
413 DO 40 i = 1, izero - 1
428 CALL
claipd( n, a, lda+1, 0 )
432 CALL
clacpy( uplo, n, n, a, lda, asav, lda )
442 anorm =
clanhe(
'1', uplo, n, a, lda,
447 CALL
cpotrf( uplo, n, a, lda, info )
451 CALL
cpotri( uplo, n, a, lda, info )
455 ainvnm =
clanhe(
'1', uplo, n, a, lda,
457 rcondc = ( one / anorm ) / ainvnm
461 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 )