238 SUBROUTINE zdrvrfp( NOUT, NN, NVAL, NNS, NSVAL, NNT, NTVAL,
239 + THRESH, A, ASAV, AFAC, AINV, B,
240 + BSAV, XACT, X, ARF, ARFINV,
241 + Z_WORK_ZLATMS, Z_WORK_ZPOT02,
242 + Z_WORK_ZPOT03, D_WORK_ZLATMS, D_WORK_ZLANHE,
243 + D_WORK_ZPOT01, D_WORK_ZPOT02, D_WORK_ZPOT03 )
250 INTEGER NN, NNS, NNT, NOUT
251 DOUBLE PRECISION THRESH
254 INTEGER NVAL( NN ), NSVAL( NNS ), NTVAL( NNT )
262 COMPLEX*16 ARFINV( * )
265 COMPLEX*16 Z_WORK_ZLATMS( * )
266 COMPLEX*16 Z_WORK_ZPOT02( * )
267 COMPLEX*16 Z_WORK_ZPOT03( * )
268 DOUBLE PRECISION D_WORK_ZLATMS( * )
269 DOUBLE PRECISION D_WORK_ZLANHE( * )
270 DOUBLE PRECISION D_WORK_ZPOT01( * )
271 DOUBLE PRECISION D_WORK_ZPOT02( * )
272 DOUBLE PRECISION D_WORK_ZPOT03( * )
278 DOUBLE PRECISION ONE, ZERO
279 PARAMETER ( ONE = 1.0d+0, zero = 0.0d+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 DOUBLE PRECISION ANORM, AINVNM, CNDNUM, RCONDC
293 CHARACTER UPLOS( 2 ), FORMS( 2 )
294 INTEGER ISEED( 4 ), ISEEDY( 4 )
295 DOUBLE PRECISION RESULT( NTESTS )
298 DOUBLE PRECISION ZLANHE
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 zlatb4(
'ZPO', imat, n, n, ctype, kl, ku,
366 + anorm, mode, cndnum, dist )
369 CALL zlatms( n, n, dist, iseed, ctype,
371 + mode, cndnum, anorm, kl, ku, uplo, a,
372 + lda, z_work_zlatms, info )
377 CALL alaerh(
'ZPF',
'ZLATMS', 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 zlaipd( n, a, lda+1, 0 )
429 CALL zlacpy( uplo, n, n, a, lda, asav, lda )
439 anorm = zlanhe(
'1', uplo, n, a, lda,
444 CALL zpotrf( uplo, n, a, lda, info )
448 CALL zpotri( uplo, n, a, lda, info )
454 ainvnm = zlanhe(
'1', uplo, n, a, lda,
456 rcondc = ( one / anorm ) / ainvnm
460 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 )
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine zlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
ZLARHS
subroutine aladhd(iounit, path)
ALADHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zpftrf(transr, uplo, n, a, info)
ZPFTRF
subroutine zpftri(transr, uplo, n, a, info)
ZPFTRI
subroutine zpftrs(transr, uplo, n, nrhs, a, b, ldb, info)
ZPFTRS
subroutine zpotrf(uplo, n, a, lda, info)
ZPOTRF
subroutine zpotri(uplo, n, a, lda, info)
ZPOTRI
subroutine ztfttr(transr, uplo, n, arf, a, lda, info)
ZTFTTR copies a triangular matrix from the rectangular full packed format (TF) to the standard full f...
subroutine ztrttf(transr, uplo, n, a, lda, arf, info)
ZTRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...
subroutine zdrvrfp(nout, nn, nval, nns, nsval, nnt, ntval, thresh, a, asav, afac, ainv, b, bsav, xact, x, arf, arfinv, z_work_zlatms, z_work_zpot02, z_work_zpot03, d_work_zlatms, d_work_zlanhe, d_work_zpot01, d_work_zpot02, d_work_zpot03)
ZDRVRFP
subroutine zget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
ZGET04
subroutine zlaipd(n, a, inda, vinda)
ZLAIPD
subroutine zlatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
ZLATB4
subroutine zlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
ZLATMS
subroutine zpot01(uplo, n, a, lda, afac, ldafac, rwork, resid)
ZPOT01
subroutine zpot02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
ZPOT02
subroutine zpot03(uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)
ZPOT03