167 SUBROUTINE zchkpo( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
168 $ thresh, tsterr, nmax, a, afac, ainv,
b, x,
169 $ xact, work, rwork, nout )
178 INTEGER nmax, nn, nnb, nns, nout
179 DOUBLE PRECISION thresh
183 INTEGER nbval( * ), nsval( * ), nval( * )
184 DOUBLE PRECISION rwork( * )
185 COMPLEX*16 a( * ), afac( * ), ainv( * ),
b( * ),
186 $ work( * ), x( * ), xact( * )
193 parameter( czero = ( 0.0d+0, 0.0d+0 ) )
195 parameter( ntypes = 9 )
197 parameter( ntests = 8 )
201 CHARACTER dist, type, uplo, xtype
203 INTEGER i, imat, in, inb, info, ioff, irhs, iuplo,
204 $ izero, k, kl, ku, lda, mode, n, nb, nerrs,
205 $ nfail, nimat, nrhs, nrun
206 DOUBLE PRECISION anorm, cndnum, rcond, rcondc
210 INTEGER iseed( 4 ), iseedy( 4 )
211 DOUBLE PRECISION result( ntests )
229 COMMON / infoc / infot, nunit, ok, lerr
230 COMMON / srnamc / srnamt
236 DATA iseedy / 1988, 1989, 1990, 1991 /
237 DATA uplos /
'U',
'L' /
243 path( 1: 1 ) =
'Zomplex precision'
249 iseed( i ) = iseedy( i )
255 $ CALL
zerrpo( path, nout )
269 DO 110 imat = 1, nimat
273 IF( .NOT.dotype( imat ) )
278 zerot = imat.GE.3 .AND. imat.LE.5
279 IF( zerot .AND. n.LT.imat-2 )
285 uplo = uplos( iuplo )
290 CALL
zlatb4( path, imat, n, n, type, kl, ku, anorm, mode,
294 CALL
zlatms( n, n, dist, iseed, type, rwork, mode,
295 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
301 CALL
alaerh( path,
'ZLATMS', info, 0, uplo, n, n, -1,
302 $ -1, -1, imat, nfail, nerrs, nout )
312 ELSE IF( imat.EQ.4 )
THEN
317 ioff = ( izero-1 )*lda
321 IF( iuplo.EQ.1 )
THEN
322 DO 20 i = 1, izero - 1
332 DO 40 i = 1, izero - 1
347 CALL
zlaipd( n, a, lda+1, 0 )
357 CALL
zlacpy( uplo, n, n, a, lda, afac, lda )
359 CALL
zpotrf( uplo, n, afac, lda, info )
363 IF( info.NE.izero )
THEN
364 CALL
alaerh( path,
'ZPOTRF', info, izero, uplo, n,
365 $ n, -1, -1, nb, imat, nfail, nerrs,
378 CALL
zlacpy( uplo, n, n, afac, lda, ainv, lda )
379 CALL
zpot01( uplo, n, a, lda, ainv, lda, rwork,
385 CALL
zlacpy( uplo, n, n, afac, lda, ainv, lda )
387 CALL
zpotri( uplo, n, ainv, lda, info )
392 $ CALL
alaerh( path,
'ZPOTRI', info, 0, uplo, n, n,
393 $ -1, -1, -1, imat, nfail, nerrs, nout )
395 CALL
zpot03( uplo, n, a, lda, ainv, lda, work, lda,
396 $ rwork, rcondc, result( 2 ) )
402 IF( result( k ).GE.thresh )
THEN
403 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
404 $ CALL
alahd( nout, path )
405 WRITE( nout, fmt = 9999 )uplo, n, nb, imat, k,
425 CALL
zlarhs( path, xtype, uplo,
' ', n, n, kl, ku,
426 $ nrhs, a, lda, xact, lda,
b, lda,
428 CALL
zlacpy(
'Full', n, nrhs,
b, lda, x, lda )
431 CALL
zpotrs( uplo, n, nrhs, afac, lda, x, lda,
437 $ CALL
alaerh( path,
'ZPOTRS', info, 0, uplo, n,
438 $ n, -1, -1, nrhs, imat, nfail,
441 CALL
zlacpy(
'Full', n, nrhs,
b, lda, work, lda )
442 CALL
zpot02( uplo, n, nrhs, a, lda, x, lda, work,
443 $ lda, rwork, result( 3 ) )
448 CALL
zget04( n, nrhs, x, lda, xact, lda, rcondc,
455 CALL
zporfs( uplo, n, nrhs, a, lda, afac, lda,
b,
456 $ lda, x, lda, rwork, rwork( nrhs+1 ),
457 $ work, rwork( 2*nrhs+1 ), info )
462 $ CALL
alaerh( path,
'ZPORFS', info, 0, uplo, n,
463 $ n, -1, -1, nrhs, imat, nfail,
466 CALL
zget04( n, nrhs, x, lda, xact, lda, rcondc,
468 CALL
zpot05( uplo, n, nrhs, a, lda,
b, lda, x, lda,
469 $ xact, lda, rwork, rwork( nrhs+1 ),
476 IF( result( k ).GE.thresh )
THEN
477 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
478 $ CALL
alahd( nout, path )
479 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
480 $ imat, k, result( k )
490 anorm =
zlanhe(
'1', uplo, n, a, lda, rwork )
492 CALL
zpocon( uplo, n, afac, lda, anorm, rcond, work,
498 $ CALL
alaerh( path,
'ZPOCON', info, 0, uplo, n, n,
499 $ -1, -1, -1, imat, nfail, nerrs, nout )
501 result( 8 ) =
dget06( rcond, rcondc )
505 IF( result( 8 ).GE.thresh )
THEN
506 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
507 $ CALL
alahd( nout, path )
508 WRITE( nout, fmt = 9997 )uplo, n, imat, 8,
520 CALL
alasum( path, nout, nfail, nrun, nerrs )
522 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NB =', i4,
', type ',
523 $ i2,
', test ', i2,
', ratio =', g12.5 )
524 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
525 $ i2,
', test(', i2,
') =', g12.5 )
526 9997
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
',', 10x,
' type ', i2,
527 $
', test(', i2,
') =', g12.5 )
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.
subroutine alahd(IOUNIT, PATH)
ALAHD
subroutine zget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
ZGET04
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zpot02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
ZPOT02
double precision function zlanhe(NORM, UPLO, N, A, LDA, WORK)
ZLANHE returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex Hermitian matrix.
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine zpotri(UPLO, N, A, LDA, INFO)
ZPOTRI
subroutine zlarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
ZLARHS
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
subroutine zpot03(UPLO, N, A, LDA, AINV, LDAINV, WORK, LDWORK, RWORK, RCOND, RESID)
ZPOT03
subroutine zpot05(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT, LDXACT, FERR, BERR, RESLTS)
ZPOT05
subroutine zpot01(UPLO, N, A, LDA, AFAC, LDAFAC, RWORK, RESID)
ZPOT01
double precision function dget06(RCOND, RCONDC)
DGET06
subroutine zerrpo(PATH, NUNIT)
ZERRPO
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine zpotrs(UPLO, N, NRHS, A, LDA, B, LDB, INFO)
ZPOTRS
subroutine zchkpo(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPO
subroutine zporfs(UPLO, N, NRHS, A, LDA, AF, LDAF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZPORFS
subroutine zpocon(UPLO, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO)
ZPOCON
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
subroutine zlaipd(N, A, INDA, VINDA)
ZLAIPD
subroutine zlatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
ZLATB4