240 SUBROUTINE zdrvrfp( NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL,
241 + thresh, a, asav, afac, ainv, b,
242 + bsav, xact, x, arf, arfinv,
243 + z_work_zlatms, z_work_zpot02,
244 + z_work_zpot03, d_work_zlatms, d_work_zlanhe,
245 + d_work_zpot01, d_work_zpot02, d_work_zpot03 )
253 INTEGER nn, nns, nnt, nout
254 DOUBLE PRECISION thresh
257 INTEGER nval( nn ), nsval( nns ), ntval( nnt )
265 COMPLEX*16 arfinv( * )
268 COMPLEX*16 z_work_zlatms( * )
269 COMPLEX*16 z_work_zpot02( * )
270 COMPLEX*16 z_work_zpot03( * )
271 DOUBLE PRECISION d_work_zlatms( * )
272 DOUBLE PRECISION d_work_zlanhe( * )
273 DOUBLE PRECISION d_work_zpot01( * )
274 DOUBLE PRECISION d_work_zpot02( * )
275 DOUBLE PRECISION d_work_zpot03( * )
281 DOUBLE PRECISION one, zero
282 parameter( one = 1.0d+0, zero = 0.0d+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 DOUBLE PRECISION anorm, ainvnm, cndnum, rcondc
296 CHARACTER uplos( 2 ), forms( 2 )
297 INTEGER iseed( 4 ), iseedy( 4 )
298 DOUBLE PRECISION 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
zlatb4(
'ZPO', imat, n, n, ctype, kl, ku,
369 + anorm, mode, cndnum, dist )
372 CALL
zlatms( n, n, dist, iseed, ctype,
374 + mode, cndnum, anorm, kl, ku, uplo, a,
375 + lda, z_work_zlatms, info )
380 CALL
alaerh(
'ZPF',
'ZLATMS', 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
zlaipd( n, a, lda+1, 0 )
432 CALL
zlacpy( uplo, n, n, a, lda, asav, lda )
442 anorm =
zlanhe(
'1', uplo, n, a, lda,
447 CALL
zpotrf( uplo, n, a, lda, info )
451 CALL
zpotri( uplo, n, a, lda, info )
455 ainvnm =
zlanhe(
'1', uplo, n, a, lda,
457 rcondc = ( one / anorm ) / ainvnm
461 CALL
zlacpy( uplo, n, n, asav, lda, a, lda )
468 CALL
zlarhs(
'ZPO',
'N', uplo,
' ', n, n, kl, ku,
469 + nrhs, a, lda, xact, lda, b, lda,
471 CALL
zlacpy(
'Full', n, nrhs, b, lda, bsav, lda )
476 CALL
zlacpy( uplo, n, n, a, lda, afac, lda )
477 CALL
zlacpy(
'Full', n, nrhs, b, ldb, x, ldb )
480 CALL
ztrttf( cform, uplo, n, afac, lda, arf, info )
482 CALL
zpftrf( cform, uplo, n, arf, info )
486 IF( info.NE.izero )
THEN
492 CALL
alaerh(
'ZPF',
'ZPFSV ', info, izero,
493 + uplo, n, n, -1, -1, nrhs, iit,
494 + nfail, nerrs, nout )
505 CALL
zpftrs( cform, uplo, n, nrhs, arf, x, ldb,
509 CALL
ztfttr( cform, uplo, n, arf, afac, lda, info )
514 CALL
zlacpy( uplo, n, n, afac, lda, asav, lda )
515 CALL
zpot01( uplo, n, a, lda, afac, lda,
516 + d_work_zpot01, result( 1 ) )
517 CALL
zlacpy( uplo, n, n, asav, lda, afac, lda )
521 IF(mod(n,2).EQ.0)
THEN
522 CALL
zlacpy(
'A', n+1, n/2, arf, n+1, arfinv,
525 CALL
zlacpy(
'A', n, (n+1)/2, arf, n, arfinv,
530 CALL
zpftri( cform, uplo, n, arfinv , info )
533 CALL
ztfttr( cform, uplo, n, arfinv, ainv, lda,
539 + CALL
alaerh(
'ZPO',
'ZPFTRI', info, 0, uplo, n,
540 + n, -1, -1, -1, imat, nfail, nerrs,
543 CALL
zpot03( uplo, n, a, lda, ainv, lda,
544 + z_work_zpot03, lda, d_work_zpot03,
545 + rcondc, result( 2 ) )
549 CALL
zlacpy(
'Full', n, nrhs, b, lda,
550 + z_work_zpot02, lda )
551 CALL
zpot02( uplo, n, nrhs, a, lda, x, lda,
552 + z_work_zpot02, lda, d_work_zpot02,
557 CALL
zget04( 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,
'ZPF' )
568 WRITE( nout, fmt = 9999 )
'ZPFSV ', uplo,
569 + n, iit, k, result( k )
582 CALL
alasvm(
'ZPF', nout, nfail, nrun, nerrs )
584 9999 format( 1x, a6,
', UPLO=''', a1,
''', N =', i5,
', type ', i1,
585 +
', test(', i1,
')=', g12.5 )