154 SUBROUTINE schktp( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
155 $ NMAX, AP, AINVP, B, X, XACT, WORK, RWORK,
164 INTEGER NMAX, NN, NNS, NOUT
169 INTEGER IWORK( * ), NSVAL( * ), NVAL( * )
170 REAL AINVP( * ), AP( * ), B( * ), RWORK( * ),
171 $ work( * ), x( * ), xact( * )
178 PARAMETER ( NTYPE1 = 10, ntypes = 18 )
180 parameter( ntests = 9 )
182 parameter( ntran = 3 )
184 parameter( one = 1.0e+0, zero = 0.0e+0 )
187 CHARACTER DIAG, NORM, TRANS, UPLO, XTYPE
189 INTEGER I, IDIAG, IMAT, IN, INFO, IRHS, ITRAN, IUPLO,
190 $ k, lap, lda, n, nerrs, nfail, nrhs, nrun
191 REAL AINVNM, ANORM, , RCONDC, RCONDI, RCONDO,
195 CHARACTER TRANSS( NTRAN ), UPLOS( 2 )
196 INTEGER ISEED( 4 ), ISEEDY( 4 )
197 REAL RESULT( NTESTS )
202 EXTERNAL lsame, slantp
213 INTEGER INFOT, IOUNIT
216 COMMON / infoc / infot, iounit, ok, lerr
217 COMMON / srnamc / srnamt
223 DATA iseedy / 1988, 1989, 1990, 1991 /
224 DATA uplos /
'U',
'L' / , transs /
'N',
'T',
'C' /
230 path( 1: 1 ) =
'Single precision'
236 iseed( i ) = iseedy( i )
242 $
CALL serrtr( path, nout )
251 lap = lda*( lda+1 ) / 2
254 DO 70 imat = 1, ntype1
258 IF( .NOT.dotype( imat ) )
265 uplo = uplos( iuplo )
270 CALL slattp( imat, uplo, 'no transpose
', DIAG, ISEED, N,
271 $ AP, X, WORK, INFO )
275 IF( LSAME( DIAG, 'n
' ) ) THEN
285 $ CALL SCOPY( LAP, AP, 1, AINVP, 1 )
287 CALL STPTRI( UPLO, DIAG, N, AINVP, INFO )
292 $ CALL ALAERH( PATH, 'stptri', INFO, 0, UPLO // DIAG, N,
293 $ N, -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
297 ANORM = SLANTP( 'i', uplo, diag, n, ap, rwork )
298 ainvnm = slantp(
'I', uplo, diag, n, ainvp, rwork )
299 IF( anorm.LE.zero .OR. ainvnm.LE.zero )
THEN
302 rcondi = ( one / anorm ) / ainvnm
308 CALL stpt01( uplo, diag, n, ap, ainvp, rcondo, rwork,
313 IF( result( 1 ).GE.thresh )
THEN
314 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
315 $
CALL alahd( nout, path )
316 WRITE( nout, fmt = 9999 )uplo, diag, n, imat, 1,
326 DO 30 itran = 1, ntran
330 trans = transs( itran )
331 IF( itran.EQ.1 )
THEN
343 CALL slarhs( path, xtype, uplo, trans, n, n, 0,
344 $ idiag, nrhs, ap, lap, xact, lda, b,
347 CALL slacpy(
'Full', n, nrhs, b, lda, x, lda )
350 CALL STPTRS( UPLO, TRANS, DIAG, N, NRHS, AP, X,
356 $ CALL ALAERH( PATH, 'stptrs', INFO, 0,
357 $ UPLO // TRANS // DIAG, N, N, -1,
358 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
360 CALL STPT02( UPLO, TRANS, DIAG, N, NRHS, AP, X,
361 $ LDA, B, LDA, WORK, RESULT( 2 ) )
366 CALL SGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
374 CALL STPRFS( UPLO, TRANS, DIAG, N, NRHS, AP, B,
375 $ LDA, X, LDA, RWORK, RWORK( NRHS+1 ),
376 $ WORK, IWORK, INFO )
381 $ CALL ALAERH( PATH, 'stprfs', INFO, 0,
382 $ UPLO // TRANS // DIAG, N, N, -1,
383 $ -1, NRHS, IMAT, NFAIL, NERRS,
386 CALL SGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
388 CALL STPT05( UPLO, TRANS, DIAG, N, NRHS, AP, B,
389 $ LDA, X, LDA, XACT, LDA, RWORK,
390 $ RWORK( NRHS+1 ), RESULT( 5 ) )
396.GE.
IF( RESULT( K )THRESH ) THEN
397.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
398 $ CALL ALAHD( NOUT, PATH )
399 WRITE( NOUT, FMT = 9998 )UPLO, TRANS, DIAG,
400 $ N, NRHS, IMAT, K, RESULT( K )
412.EQ.
IF( ITRAN1 ) THEN
421 CALL STPCON( NORM, UPLO, DIAG, N, AP, RCOND, WORK,
427 $ CALL ALAERH( PATH, 'stpcon', INFO, 0,
428 $ NORM // UPLO // DIAG, N, N, -1, -1,
429 $ -1, IMAT, NFAIL, NERRS, NOUT )
431 CALL STPT06( RCOND, RCONDC, UPLO, DIAG, N, AP, RWORK,
436.GE.
IF( RESULT( 7 )THRESH ) THEN
437.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
438 $ CALL ALAHD( NOUT, PATH )
439 WRITE( NOUT, FMT = 9997 ) 'stpcon', NORM, UPLO,
440 $ DIAG, N, IMAT, 7, RESULT( 7 )
450 DO 100 IMAT = NTYPE1 + 1, NTYPES
454.NOT.
IF( DOTYPE( IMAT ) )
461 UPLO = UPLOS( IUPLO )
462 DO 80 ITRAN = 1, NTRAN
466 TRANS = TRANSS( ITRAN )
471 CALL SLATTP( IMAT, UPLO, TRANS, DIAG, ISEED, N, AP, X,
478 CALL SCOPY( N, X, 1, B, 1 )
479 CALL SLATPS( UPLO, TRANS, DIAG, 'n', n, ap, b, scale,
485 $
CALL alaerh( path,
'SLATPS', info, 0,
486 $ uplo // trans // diag //
'N', n, n,
487 $ -1, -1, -1, imat, nfail, nerrs, nout )
489 CALL stpt03( uplo, trans, diag, n, 1, ap, scale,
490 $ rwork, one, b, lda, x, lda, work,
496 CALL scopy( n, x, 1, b( n+1 ), 1 )
497 CALL slatps( uplo, trans, diag,
'Y', n, ap, b( n+1 ),
498 $ scale, rwork, info )
503 $
CALL alaerh( path,
'SLATPS', info, 0,
504 $ uplo // trans // diag //
'Y', n, n,
505 $ -1, -1, -1, imat, nfail, nerrs, nout )
507 CALL stpt03( uplo, trans, diag, n, 1, ap, scale,
508 $ rwork, one, b( n+1 ), lda, x, lda, work,
514 IF( result( 8 ).GE.thresh )
THEN
515 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
516 $
CALL alahd( nout, path )
517 WRITE( nout, fmt = 9996 )
'SLATPS', uplo, trans,
518 $ diag,
'N', n, imat, 8, result( 8 )
521 IF( result( 9 ).GE.thresh )
THEN
522 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
523 $
CALL alahd( nout, path )
524 WRITE( nout, fmt = 9996 )
'SLATPS', uplo, trans,
525 $ diag,
'Y', n, imat, 9, result( 9 )
536 CALL alasum( path, nout, nfail, nrun, nerrs )
538 9999
FORMAT(
' UPLO=''', a1,
''', DIAG=''', a1,
''', N=', i5,
539 $
', type ', i2,
', test(', i2,
')= ', g12.5 )
540 9998
FORMAT(
' UPLO=''', a1,
''', TRANS=''', a1,
''', DIAG=''', a1,
541 $
''', N=', i5,
''', NRHS=', i5,
', type ', i2,
', test(',
543 9997
FORMAT( 1x, a,
'( ''', a1,
''', ''', a1,
''', ''', a1,
''',',
544 $ i5,
', ... ), type ', i2,
', test(', i2,
')=', g12.5 )
545 9996
FORMAT( 1x, a,
'( ''', a1,
''', ''', a1,
''', ''', a1,
''', ''',
546 $ a1,
''',', i5,
', ... ), type ', i2,
', test(', i2,
')=',