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( * )
177 INTEGER NTYPE1, NTYPES
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, RCOND, RCONDC, RCONDI, RCONDO,
195 CHARACTER TRANSS( NTRAN ), UPLOS( 2 )
196 INTEGER ISEED( 4 ), ISEEDY( 4 )
197 REAL RESULT( NTESTS )
202 EXTERNAL lsame, slantp
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.LE..OR..LE.
IF( ANORMZERO AINVNMZERO ) THEN
302 RCONDI = ( ONE / ANORM ) / AINVNM
308 CALL STPT01( UPLO, DIAG, N, AP, AINVP, RCONDO, RWORK,
313.GE.
IF( RESULT( 1 )THRESH ) THEN
314.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
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.EQ.
IF( ITRAN1 ) 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.GE.
IF( RESULT( 8 )THRESH ) THEN
515.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
516 $ CALL ALAHD( NOUT, PATH )
517 WRITE( NOUT, FMT = 9996 )'slatps', UPLO, TRANS,
518 $ DIAG, 'n
', N, IMAT, 8, RESULT( 8 )
521.GE.
IF( RESULT( 9 )THRESH ) THEN
522.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
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, ')=
',
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine alahd(iounit, path)
ALAHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine slatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, info)
SLATPS solves a triangular system of equations with the matrix held in packed storage.
subroutine stptrs(uplo, trans, diag, n, nrhs, ap, b, ldb, info)
STPTRS
subroutine stprfs(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, ferr, berr, work, iwork, info)
STPRFS
subroutine stptri(uplo, diag, n, ap, info)
STPTRI
subroutine stpcon(norm, uplo, diag, n, ap, rcond, work, iwork, info)
STPCON
subroutine scopy(n, sx, incx, sy, incy)
SCOPY
subroutine slarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
SLARHS
subroutine stpt05(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
STPT05
subroutine stpt01(uplo, diag, n, ap, ainvp, rcond, work, resid)
STPT01
subroutine stpt02(uplo, trans, diag, n, nrhs, ap, x, ldx, b, ldb, work, resid)
STPT02
subroutine slattp(imat, uplo, trans, diag, iseed, n, a, b, work, info)
SLATTP
subroutine stpt03(uplo, trans, diag, n, nrhs, ap, scale, cnorm, tscal, x, ldx, b, ldb, work, resid)
STPT03
subroutine sget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
SGET04
subroutine stpt06(rcond, rcondc, uplo, diag, n, ap, work, rat)
STPT06
subroutine serrtr(path, nunit)
SERRTR
subroutine schktp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ap, ainvp, b, x, xact, work, rwork, iwork, nout)
SCHKTP