153 SUBROUTINE schkps( DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL,
154 $ THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK,
164 INTEGER nmax, nn, nnb, nout, nrank
168 REAL a( * ), AFAC( * ), PERM( * ), RWORK( * ),
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 ) =
'Single Precision'
224 iseed( i ) = iseedy( i )
230 $
CALL serrps( path, nout )
244 DO 140 imat = 1, nimat
248 IF( .NOT.dotype( imat ) )
253 DO 130 irank = 1, nrank
258 IF( ( imat.LT.3 .OR. imat.GT.5 ) .AND. irank.GT.1 )
261 rank = ceiling( ( n * real( rankval( irank ) ) )
268 uplo = uplos( iuplo )
273 CALL slatb5( path, imat, n,
TYPE, kl, ku, anorm,
274 $ mode, cndnum, dist )
277 CALL slatmt( n, n, dist, iseed,
TYPE, rwork, mode,
278 $ cndnum, anorm, rank, kl, ku, uplo, a,
284 CALL alaerh( path,
'SLATMT', info, 0, uplo, n,
285 $ n, -1, -1, -1, imat, nfail, nerrs,
299 CALL slacpy( uplo, n, n, a, lda, afac, lda )
305 CALL spstrf( uplo, n, afac, lda, piv, comprank,
311 $ .OR.(info.NE.izero.AND.rank.EQ.n)
312 $ .OR.(info.LE.izero.AND.rank.LT.n) )
THEN
313 CALL alaerh( path,
'SPSTRF', info, izero,
314 $ uplo, n, n, -1, -1, nb, imat,
315 $ nfail, nerrs, nout )
328 CALL spst01( uplo, n, a, lda, afac, lda, perm, lda,
329 $ piv, rwork, result, comprank )
336 rankdiff = rank - comprank
337 IF( result.GE.thresh )
THEN
338 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
339 $
CALL alahd( nout, path )
340 WRITE( nout, fmt = 9999 )uplo, n, rank,
341 $ rankdiff, nb, imat, result
354 CALL alasum( path, nout, nfail, nrun, nerrs )
356 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', RANK =', i3,
357 $
', Diff =', i5,
', NB =', i4,
', type ', i2,
', Ratio =',