160 SUBROUTINE schksp( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
161 $ NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK,
170 INTEGER NMAX, NN, NNS, NOUT
175 INTEGER IWORK( * ), NSVAL( * ), NVAL( * )
176 REAL A( * ), AFAC( * ), AINV( * ), B( * ),
177 $ rwork( * ), work( * ), x( * ), xact( * )
184 PARAMETER ( ZERO = 0.0e+0 )
186 parameter( ntypes = 10 )
188 parameter( ntests = 8 )
191 LOGICAL TRFCON, ZEROT
192 CHARACTER DIST, PACKIT,
TYPE, UPLO, XTYPE
194 INTEGER I, I1, I2, IMAT, IN, INFO, IOFF, IRHS, IUPLO,
195 $ izero, j, k, kl, ku, lda, mode, n, nerrs,
196 $ nfail, nimat, npp, nrhs, nrun, nt
197 REAL ANORM, CNDNUM, RCOND, RCONDC
201 INTEGER ISEED( 4 ), ISEEDY( 4 )
202 REAL RESULT( NTESTS )
207 EXTERNAL lsame, sget06, slansp
224 COMMON / infoc / infot, nunit, ok, lerr
225 COMMON / srnamc / srnamt
228 DATA iseedy / 1988, 1989, 1990, 1991 /
229 DATA uplos /
'U',
'L' /
235 path( 1: 1 ) =
'Single precision'
241 iseed( i ) = iseedy( i )
247 $
CALL serrsy( path, nout )
261 DO 160 imat = 1, nimat
265 IF( .NOT.dotype( imat ) )
270 zerot = imat.GE.3 .AND. imat.LE.6
271 IF( zerot .AND. n.LT.imat-2 )
277 uplo = uplos( iuplo )
278 IF( lsame( uplo,
'U' ) )
THEN
287 CALL slatb4( path, imat, n, n,
TYPE, kl, ku, anorm, mode,
291 CALL slatms( n, n, dist, iseed,
TYPE, rwork, mode,
292 $ cndnum, anorm, kl, ku, packit, a, lda, work,
298 CALL alaerh( path,
'SLATMS', info, 0, uplo, n, n, -1,
299 $ -1, -1, imat, nfail, nerrs, nout )
309 ELSE IF( imat.EQ.4 )
THEN
319 IF( iuplo.EQ.1 )
THEN
320 ioff = ( izero-1 )*izero / 2
321 DO 20 i = 1, izero - 1
331 DO 40 i = 1, izero - 1
342 IF( iuplo.EQ.1 )
THEN
373 CALL scopy( npp, a, 1, afac, 1 )
375 CALL ssptrf( uplo, n, afac, iwork, info )
383 IF( iwork( k ).LT.0 )
THEN
384 IF( iwork( k ).NE.-k )
THEN
388 ELSE IF( iwork( k ).NE.k )
THEN
397 $
CALL alaerh( path,
'SSPTRF', info, k, uplo, n, n, -1,
398 $ -1, -1, imat, nfail, nerrs, nout )
408 CALL sspt01( uplo, n, a, afac, iwork, ainv, lda, rwork,
415 IF( .NOT.trfcon )
THEN
416 CALL scopy( npp, afac, 1, ainv, 1 )
418 CALL ssptri( uplo, n, ainv, iwork, work, info )
423 $
CALL alaerh( path,
'SSPTRI', info, 0, uplo, n, n,
424 $ -1, -1, -1, imat, nfail, nerrs, nout )
426 CALL sppt03( uplo, n, a, ainv, work, lda, rwork,
427 $ rcondc, result( 2 ) )
435 IF( result( k ).GE.thresh )
THEN
436 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
437 $
CALL alahd( nout, path )
438 WRITE( nout, fmt = 9999 )uplo, n, imat, k,
459 CALL slarhs( path, xtype, uplo,
' ', n, n, kl, ku,
460 $ nrhs, a, lda, xact, lda, b, lda, iseed,
462 CALL slacpy(
'Full', n, nrhs, b, lda, x, lda )
465 CALL ssptrs( uplo, n, nrhs, afac, iwork, x, lda,
471 $
CALL alaerh( path,
'SSPTRS', info, 0, uplo, n, n,
472 $ -1, -1, nrhs, imat, nfail, nerrs,
475 CALL slacpy( 'full
', N, NRHS, B, LDA, WORK, LDA )
476 CALL SPPT02( UPLO, N, NRHS, A, X, LDA, WORK, LDA,
477 $ RWORK, RESULT( 3 ) )
482 CALL SGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
489 CALL SSPRFS( UPLO, N, NRHS, A, AFAC, IWORK, B, LDA, X,
490 $ LDA, RWORK, RWORK( NRHS+1 ), WORK,
491 $ IWORK( N+1 ), INFO )
496 $ CALL ALAERH( PATH, 'ssprfs', info, 0, uplo, n, n,
500 CALL sget04( n, nrhs, x, lda, xact, lda, rcondc,
502 CALL sppt05( uplo, n, nrhs, a, b, lda, x, lda, xact,
503 $ lda, rwork, rwork( nrhs+1 ),
510 IF( result( k ).GE.thresh )
THEN
511 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
512 $
CALL alahd( nout, path )
513 WRITE( nout, fmt = 9998 )uplo, n, nrhs, imat,
525 anorm = slansp(
'1', uplo, n, a, rwork )
527 CALL sspcon( uplo, n, afac, iwork, anorm, rcond, work,
528 $ iwork( n+1 ), info )
533 $
CALL alaerh( path,
'SSPCON', info, 0, uplo, n, n, -1,
534 $ -1, -1, imat, nfail, nerrs, nout )
536 result( 8 ) = sget06( rcond, rcondc )
540 IF( result( 8 ).GE.thresh )
THEN
541 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
542 $
CALL alahd( nout, path )
543 WRITE( nout, fmt = 9999 )uplo, n, imat, 8,
554 CALL alasum( path, nout, nfail, nrun, nerrs )
556 9999
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', type ', i2,
', test ',
557 $ i2,
', ratio =', g12.5 )
558 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
559 $ i2,
', test(', i2,
') =', g12.5 )