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 zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zlatmt(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, RANK, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMT
subroutine zerrps(PATH, NUNIT)
ZERRPS
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
subroutine zlatb5(PATH, IMAT, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
ZLATB5
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