148 SUBROUTINE cchktp( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
149 $ NMAX, AP, AINVP, B, X, XACT, WORK, RWORK,
158 INTEGER NMAX, NN, NNS, NOUT
163 INTEGER NSVAL( * ), NVAL( * )
165 COMPLEX AINVP( * ), AP( * ), B( * ), WORK( * ), X( * ),
172 INTEGER NTYPE1, NTYPES
173 PARAMETER ( NTYPE1 = 10, ntypes = 18 )
175 parameter( ntests = 9 )
177 parameter( ntran = 3 )
179 parameter( one = 1.0e+0, zero = 0.0e+0 )
182 CHARACTER DIAG, NORM, TRANS, UPLO, XTYPE
184 INTEGER I, IDIAG, IMAT, IN, INFO, IRHS, ITRAN, IUPLO,
185 $ k, lap, lda, n, nerrs, nfail, nrhs, nrun
186 REAL AINVNM, ANORM, , RCONDC, RCONDI, RCONDO,
190 CHARACTER ( NTRAN ), UPLOS( 2 )
191 INTEGER ISEED( 4 ), ISEEDY( 4 )
192 REAL RESULT( NTESTS )
208 INTEGER INFOT, IOUNIT
211 COMMON / infoc / infot, iounit, ok, lerr
212 COMMON / srnamc / srnamt
218 DATA iseedy / 1988, 1989, 1990, 1991 /
219 DATA uplos /
'U',
'L' / , transs / 'n
', 't
', 'c
' /
225 PATH( 1: 1 ) = 'Complex precision
'
231 ISEED( I ) = ISEEDY( I )
237 $ CALL CERRTR( PATH, NOUT )
246 LAP = LDA*( LDA+1 ) / 2
249 DO 70 IMAT = 1, NTYPE1
253.NOT.
IF( DOTYPE( IMAT ) )
260 UPLO = UPLOS( IUPLO )
265 CALL CLATTP( IMAT, UPLO, 'No transpose
', DIAG, ISEED, N,
266 $ AP, X, WORK, RWORK, INFO )
270 IF( LSAME( DIAG, 'N
' ) ) THEN
280 $ CALL CCOPY( LAP, AP, 1, AINVP, 1 )
282 CALL CTPTRI( UPLO, DIAG, N, AINVP, INFO )
287 $ CALL ALAERH( PATH, 'CTPTRI
', INFO, 0, UPLO // DIAG, N,
288 $ N, -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
292 ANORM = CLANTP( '', UPLO, DIAG, N, AP, RWORK )
293 AINVNM = CLANTP( 'I
', UPLO, DIAG, N, AINVP, RWORK )
294.LE..OR..LE.
IF( ANORMZERO AINVNMZERO ) THEN
297 RCONDI = ( ONE / ANORM ) / AINVNM
303 CALL CTPT01( UPLO, DIAG, N, AP, AINVP, RCONDO, RWORK,
308.GE.
IF( RESULT( 1 )THRESH ) THEN
309.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
310 $ CALL ALAHD( NOUT, PATH )
311 WRITE( NOUT, FMT = 9999 )UPLO, DIAG, N, IMAT, 1,
321 DO 30 ITRAN = 1, NTRAN
325 TRANS = TRANSS( ITRAN )
326.EQ.
IF( ITRAN1 ) THEN
338 CALL CLARHS( PATH, XTYPE, UPLO, TRANS, N, N, 0,
339 $ IDIAG, NRHS, AP, LAP, XACT, LDA, B,
342 CALL CLACPY( 'Full
', N, NRHS, B, LDA, X, LDA )
345 CALL CTPTRS( UPLO, TRANS, DIAG, N, NRHS, AP, X,
351 $
CALL alaerh( path, 'ctptrs
', INFO, 0,
352 $ UPLO // TRANS // DIAG, N, N, -1,
353 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
355 CALL CTPT02( UPLO, TRANS, DIAG, N, NRHS, AP, X,
356 $ LDA, B, LDA, WORK, RWORK,
362 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
370 CALL CTPRFS( UPLO, TRANS, DIAG, N, NRHS, AP, B,
371 $ LDA, X, LDA, RWORK, RWORK( NRHS+1 ),
372 $ WORK, RWORK( 2*NRHS+1 ), INFO )
377 $ CALL ALAERH( PATH, 'ctprfs', INFO, 0,
378 $ UPLO // TRANS // DIAG, N, N, -1,
379 $ -1, NRHS, IMAT, NFAIL, NERRS,
382 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
384 CALL CTPT05( UPLO, TRANS, DIAG, N, NRHS, AP, B,
385 $ LDA, X, LDA, XACT, LDA, RWORK,
386 $ RWORK( NRHS+1 ), RESULT( 5 ) )
392.GE.
IF( RESULT( K )THRESH ) THEN
393.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
394 $ CALL ALAHD( NOUT, PATH )
395 WRITE( NOUT, FMT = 9998 )UPLO, TRANS, DIAG,
396 $ N, NRHS, IMAT, K, RESULT( K )
408.EQ.
IF( ITRAN1 ) THEN
416 CALL CTPCON( NORM, UPLO, DIAG, N, AP, RCOND, WORK,
422 $ CALL ALAERH( PATH, 'ctpcon', INFO, 0,
423 $ NORM // UPLO // DIAG, N, N, -1, -1,
424 $ -1, IMAT, NFAIL, NERRS, NOUT )
426 CALL CTPT06( RCOND, RCONDC, UPLO, DIAG, N, AP, RWORK,
431.GE.
IF( RESULT( 7 )THRESH ) THEN
432.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
433 $ CALL ALAHD( NOUT, PATH )
434 WRITE( NOUT, FMT = 9997 ) 'ctpcon', NORM, UPLO,
435 $ DIAG, N, IMAT, 7, RESULT( 7 )
445 DO 100 IMAT = NTYPE1 + 1, NTYPES
449.NOT.
IF( DOTYPE( IMAT ) )
456 UPLO = UPLOS( IUPLO )
457 DO 80 ITRAN = 1, NTRAN
461 TRANS = TRANSS( ITRAN )
466 CALL CLATTP( IMAT, UPLO, TRANS, DIAG, ISEED, N, AP, X,
467 $ WORK, RWORK, INFO )
473 CALL CCOPY( N, X, 1, B, 1 )
474 CALL CLATPS( UPLO, TRANS, DIAG, 'n
', N, AP, B, SCALE,
480 $ CALL ALAERH( PATH, 'clatps', INFO, 0,
481 $ UPLO // TRANS // DIAG // 'n
', N, N,
482 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
484 CALL CTPT03( UPLO, TRANS, DIAG, N, 1, AP, SCALE,
485 $ RWORK, ONE, B, LDA, X, LDA, WORK,
491 CALL CCOPY( N, X, 1, B( N+1 ), 1 )
492 CALL CLATPS( UPLO, TRANS, DIAG, 'y
', N, AP, B( N+1 ),
493 $ SCALE, RWORK, INFO )
498 $ CALL ALAERH( PATH, 'clatps', INFO, 0,
499 $ UPLO // TRANS // DIAG // 'y
', N, N,
500 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
502 CALL CTPT03( UPLO, TRANS, DIAG, N, 1, AP, SCALE,
503 $ RWORK, ONE, B( N+1 ), LDA, X, LDA, WORK,
509.GE.
IF( RESULT( 8 )THRESH ) THEN
510.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
511 $ CALL ALAHD( NOUT, PATH )
512 WRITE( NOUT, FMT = 9996 )'clatps', UPLO, TRANS,
513 $ DIAG, 'n
', N, IMAT, 8, RESULT( 8 )
516.GE.
IF( RESULT( 9 )THRESH ) THEN
517.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
518 $ CALL ALAHD( NOUT, PATH )
519 WRITE( NOUT, FMT = 9996 )'clatps', UPLO, TRANS,
520 $ DIAG, 'y
', N, IMAT, 9, RESULT( 9 )
531 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
533 9999 FORMAT( ' uplo=
''', A1, ''', diag=
''', A1, ''', n=
', I5,
534 $ ',
type ', I2, ', test(
', I2, ')=
', G12.5 )
535 9998 FORMAT( ' uplo=
''', A1, ''', trans=
''', A1, ''', diag=
''', A1,
536 $ ''', n=
', I5, ''', nrhs=
', I5, ',
type ', I2, ', test(
',
538 9997 FORMAT( 1X, A, '(
''', A1, ''',
''', A1, ''',
''', A1, ''',
',
539 $ I5, ', ... ),
type ', I2, ', test(
', I2, ')=
', G12.5 )
540 9996 FORMAT( 1X, A, '(
''', A1, ''',
''', A1, ''',
''', A1, ''',
''',
541 $ A1, ''',
', I5, ', ... ),
type ', I2, ', test(
', I2, ')=
',
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 clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine clatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, info)
CLATPS solves a triangular system of equations with the matrix held in packed storage.
real function clantp(norm, uplo, diag, n, ap, work)
CLANTP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
subroutine ctprfs(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CTPRFS
subroutine ctptri(uplo, diag, n, ap, info)
CTPTRI
subroutine ctptrs(uplo, trans, diag, n, nrhs, ap, b, ldb, info)
CTPTRS
subroutine ctpcon(norm, uplo, diag, n, ap, rcond, work, rwork, info)
CTPCON
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine clarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
CLARHS
subroutine ctpt01(uplo, diag, n, ap, ainvp, rcond, rwork, resid)
CTPT01
subroutine cerrtr(path, nunit)
CERRTR
subroutine clattp(imat, uplo, trans, diag, iseed, n, ap, b, work, rwork, info)
CLATTP
subroutine ctpt05(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
CTPT05
subroutine ctpt03(uplo, trans, diag, n, nrhs, ap, scale, cnorm, tscal, x, ldx, b, ldb, work, resid)
CTPT03
subroutine cchktp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ap, ainvp, b, x, xact, work, rwork, nout)
CCHKTP
subroutine ctpt02(uplo, trans, diag, n, nrhs, ap, x, ldx, b, ldb, work, rwork, resid)
CTPT02
subroutine ctpt06(rcond, rcondc, uplo, diag, n, ap, rwork, rat)
CTPT06
subroutine cget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
CGET04