153 SUBROUTINE zchkps( DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL,
154 $ thresh, tsterr, nmax, a, afac, perm, piv, work,
163 DOUBLE PRECISION THRESH
164 INTEGER NMAX, NN, NNB, NOUT, NRANK
168 COMPLEX*16 A( * ), AFAC( * ), PERM( * ), WORK( * )
169 DOUBLE PRECISION RWORK( * )
170 INTEGER NBVAL( * ), NVAL( * ), PIV( * ), RANKVAL( * )
178 parameter ( one = 1.0e+0 )
180 parameter ( ntypes = 9 )
183 DOUBLE PRECISION ANORM, CNDNUM, RESULT, TOL
184 INTEGER COMPRANK, I, IMAT, IN, INB, INFO, IRANK, IUPLO,
185 $ izero, kl, ku, lda, mode, n, nb, nerrs, nfail,
186 $ nimat, nrun, rank, rankdiff
187 CHARACTER DIST,
TYPE, UPLO
191 INTEGER ISEED( 4 ), ISEEDY( 4 )
204 COMMON / infoc / infot, nunit, ok, lerr
205 COMMON / srnamc / srnamt
208 INTRINSIC dble, max, ceiling
211 DATA iseedy / 1988, 1989, 1990, 1991 /
212 DATA uplos /
'U',
'L' /
218 path( 1: 1 ) =
'Zomplex Precision'
224 iseed( i ) = iseedy( i )
230 $
CALL zerrps( path, nout )
243 DO 140 imat = 1, nimat
247 IF( .NOT.dotype( imat ) )
252 DO 130 irank = 1, nrank
257 IF( ( imat.LT.3 .OR. imat.GT.5 ) .AND. irank.GT.1 )
260 rank = ceiling( ( n * dble( rankval( irank ) ) )
267 uplo = uplos( iuplo )
272 CALL zlatb5( path, imat, n,
TYPE, KL, KU, ANORM,
273 $ mode, cndnum, dist )
276 CALL zlatmt( n, n, dist, iseed,
TYPE, RWORK, MODE,
277 $ cndnum, anorm, rank, kl, ku, uplo, a,
283 CALL alaerh( path,
'ZLATMT', info, 0, uplo, n,
284 $ n, -1, -1, -1, imat, nfail, nerrs,
298 CALL zlacpy( uplo, n, n, a, lda, afac, lda )
304 CALL zpstrf( uplo, n, afac, lda, piv, comprank,
310 $ .OR.(info.NE.izero.AND.rank.EQ.n)
311 $ .OR.(info.LE.izero.AND.rank.LT.n) )
THEN
312 CALL alaerh( path,
'ZPSTRF', info, izero,
313 $ uplo, n, n, -1, -1, nb, imat,
314 $ nfail, nerrs, nout )
327 CALL zpst01( uplo, n, a, lda, afac, lda, perm, lda,
328 $ piv, rwork, result, comprank )
335 rankdiff = rank - comprank
336 IF( result.GE.thresh )
THEN
337 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
338 $
CALL alahd( nout, path )
339 WRITE( nout, fmt = 9999 )uplo, n, rank,
340 $ rankdiff, nb, imat, result
353 CALL alasum( path, nout, nfail, nrun, nerrs )
355 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', RANK =', i3,
356 $
', Diff =', i5,
', NB =', i4,
', type ', i2,
', Ratio =',
subroutine alahd(IOUNIT, PATH)
ALAHD
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 zerrps(PATH, NUNIT)
ZERRPS
subroutine zlatmt(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, RANK, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMT
subroutine zchkps(DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL, THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK, RWORK, NOUT)
ZCHKPS
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine zpst01(UPLO, N, A, LDA, AFAC, LDAFAC, PERM, LDPERM, PIV, RWORK, RESID, RANK)
ZPST01
subroutine zpstrf(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO)
ZPSTRF computes the Cholesky factorization with complete pivoting of a complex Hermitian positive sem...
subroutine zlatb5(PATH, IMAT, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
ZLATB5
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM