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 =',