153 SUBROUTINE cchkps( DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL,
154 $ thresh, tsterr, nmax, a, afac, perm, piv, work,
164 INTEGER NMAX, NN, NNB, NOUT, NRANK
168 COMPLEX A( * ), AFAC( * ), PERM( * ), WORK( * )
170 INTEGER NBVAL( * ), NVAL( * ), PIV( * ), RANKVAL( * )
178 parameter ( one = 1.0e+0 )
180 parameter ( ntypes = 9 )
183 REAL 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 max,
REAL, CEILING
211 DATA iseedy / 1988, 1989, 1990, 1991 /
212 DATA uplos /
'U',
'L' /
218 path( 1: 1 ) =
'Complex Precision'
224 iseed( i ) = iseedy( i )
230 $
CALL cerrps( 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 *
REAL( RANKVAL( IRANK ) ) )
267 uplo = uplos( iuplo )
272 CALL clatb5( path, imat, n,
TYPE, KL, KU, ANORM,
273 $ mode, cndnum, dist )
276 CALL clatmt( n, n, dist, iseed,
TYPE, RWORK, MODE,
277 $ cndnum, anorm, rank, kl, ku, uplo, a,
283 CALL alaerh( path,
'CLATMT', info, 0, uplo, n,
284 $ n, -1, -1, -1, imat, nfail, nerrs,
298 CALL clacpy( uplo, n, n, a, lda, afac, lda )
304 CALL cpstrf( 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,
'CPSTRF', info, izero,
313 $ uplo, n, n, -1, -1, nb, imat,
314 $ nfail, nerrs, nout )
327 CALL cpst01( 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 cpstrf(UPLO, N, A, LDA, PIV, RANK, TOL, WORK, INFO)
CPSTRF computes the Cholesky factorization with complete pivoting of complex Hermitian positive semid...
subroutine clatmt(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, RANK, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMT
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine cpst01(UPLO, N, A, LDA, AFAC, LDAFAC, PERM, LDPERM, PIV, RWORK, RESID, RANK)
CPST01
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine cchkps(DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL, THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK, RWORK, NOUT)
CCHKPS
subroutine clatb5(PATH, IMAT, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
CLATB5
subroutine cerrps(PATH, NUNIT)
CERRPS
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM