145 SUBROUTINE cchkpt( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
146 $ A, D, E, B, X, XACT, WORK, RWORK, NOUT )
154 INTEGER NN, NNS, NOUT
159 INTEGER NSVAL( * ), NVAL( * )
160 REAL D( * ), RWORK( * )
161 COMPLEX A( * ), B( * ), E( * ), WORK( * ), X( * ),
169 parameter( one = 1.0e+0, zero = 0.0e+0 )
171 parameter( ntypes = 12 )
173 parameter( ntests = 7 )
177 CHARACTER DIST,
TYPE, UPLO
179 INTEGER I, IA, IMAT, IN, INFO, IRHS, IUPLO, IX
182 REAL AINVNM, ANORM, COND, , RCOND,
186 INTEGER ISEED( 4 ), ISEEDY( 4 )
192 REAL CLANHT, SCASUM, SGET06
193 EXTERNAL isamax, clanht, scasum, sget06
202 INTRINSIC abs,
max, real
210 COMMON / infoc / infot, nunit, ok, lerr
211 COMMON / srnamc / srnamt
214 DATA iseedy / 0, 0, 0, 1 / , uplos /
'U',
'L' /
218 path( 1: 1 ) =
'Complex precision'
224 iseed( i ) = iseedy( i )
230 $
CALL cerrgt( path, nout )
243 DO 110 imat = 1, nimat
247 IF( n.GT.0 .AND. .NOT.dotype( imat ) )
252 CALL clatb4( path, imat, n, n,
TYPE, kl, ku, anorm, mode,
255 zerot = imat.GE.8 .AND. imat.LE.10
262 CALL clatms( n, n, dist, iseed,
TYPE, rwork, mode, cond,
263 $ anorm, kl, ku,
'B', a, 2, work, info )
269 $ KU, -1, IMAT, NFAIL, NERRS, NOUT )
278 D( I ) = REAL( A( IA ) )
283 $ D( N ) = REAL( A( IA ) )
289.NOT..OR..NOT.
IF( ZEROT DOTYPE( 7 ) ) THEN
293 CALL SLARNV( 2, ISEED, N, D )
294 CALL CLARNV( 2, ISEED, N-1, E )
299 D( 1 ) = ABS( D( 1 ) )
301 D( 1 ) = ABS( D( 1 ) ) + ABS( E( 1 ) )
302 D( N ) = ABS( D( N ) ) + ABS( E( N-1 ) )
304 D( I ) = ABS( D( I ) ) + ABS( E( I ) ) +
311 IX = ISAMAX( N, D, 1 )
313 CALL SSCAL( N, ANORM / DMAX, D, 1 )
314 CALL CSSCAL( N-1, ANORM / DMAX, E, 1 )
316.GT.
ELSE IF( IZERO0 ) THEN
321.EQ.
IF( IZERO1 ) THEN
325.EQ.
ELSE IF( IZERON ) THEN
329 E( IZERO-1 ) = Z( 1 )
347.EQ.
ELSE IF( IMAT9 ) THEN
355.EQ.
ELSE IF( IMAT10 ) THEN
357.GT.
IF( IZERO1 ) THEN
358 Z( 1 ) = E( IZERO-1 )
368 CALL SCOPY( N, D, 1, D( N+1 ), 1 )
370 $ CALL CCOPY( N-1, E, 1, E( N+1 ), 1 )
376 CALL CPTTRF( N, D( N+1 ), E( N+1 ), INFO )
380.NE.
IF( INFOIZERO ) THEN
381 CALL ALAERH( PATH, 'cpttrf', INFO, IZERO, ' ', N, N, -1,
382 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
391 CALL CPTT01( N, D, E, D( N+1 ), E( N+1 ), WORK,
396.GE.
IF( RESULT( 1 )THRESH ) THEN
397.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
398 $ CALL ALAHD( NOUT, PATH )
399 WRITE( NOUT, FMT = 9999 )N, IMAT, 1, RESULT( 1 )
408 ANORM = CLANHT( '1
', N, D, E )
419 CALL CPTTRS( 'lower
', N, 1, D( N+1 ), E( N+1 ), X, LDA,
421 AINVNM = MAX( AINVNM, SCASUM( N, X, 1 ) )
423 RCONDC = ONE / MAX( ONE, ANORM*AINVNM )
432 CALL CLARNV( 2, ISEED, N, XACT( IX ) )
440 UPLO = UPLOS( IUPLO )
444 CALL CLAPTM( UPLO, N, NRHS, ONE, D, E, XACT, LDA,
450 CALL CLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
451 CALL CPTTRS( UPLO, N, NRHS, D( N+1 ), E( N+1 ), X,
457 $ CALL ALAERH( PATH, 'cpttrs', INFO, 0, UPLO, N, N,
458 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
461 CALL CLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
462 CALL CPTT02( UPLO, N, NRHS, D, E, X, LDA, WORK, LDA,
468 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
475 CALL CPTRFS( UPLO, N, NRHS, D, E, D( N+1 ), E( N+1 ),
476 $ B, LDA, X, LDA, RWORK, RWORK( NRHS+1 ),
477 $ WORK, RWORK( 2*NRHS+1 ), INFO )
482 $ CALL ALAERH( PATH, 'cptrfs', INFO, 0, UPLO, N, N,
483 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
486 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
488 CALL CPTT05( N, NRHS, D, E, B, LDA, X, LDA, XACT, LDA,
489 $ RWORK, RWORK( NRHS+1 ), RESULT( 5 ) )
495.GE.
IF( RESULT( K )THRESH ) THEN
496.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
497 $ CALL ALAHD( NOUT, PATH )
498 WRITE( NOUT, FMT = 9998 )UPLO, N, NRHS, IMAT,
514 CALL CPTCON( N, D( N+1 ), E( N+1 ), ANORM, RCOND, RWORK,
520 $ CALL ALAERH( PATH, 'cptcon', INFO, 0, ' ', N, N, -1, -1,
521 $ -1, IMAT, NFAIL, NERRS, NOUT )
523 RESULT( 7 ) = SGET06( RCOND, RCONDC )
527.GE.
IF( RESULT( 7 )THRESH ) THEN
528.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
529 $ CALL ALAHD( NOUT, PATH )
530 WRITE( NOUT, FMT = 9999 )N, IMAT, 7, RESULT( 7 )
539 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
541 9999 FORMAT( ' n =
', I5, ',
type ', I2, ', test
', I2, ', ratio =
',
543 9998 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ', nrhs =
', I3,
544 $ ',
type ', I2, ', test
', I2, ', ratio =
', G12.5 )
subroutine slarnv(idist, iseed, n, x)
SLARNV returns a vector of random numbers from a uniform or normal distribution.
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 clarnv(idist, iseed, n, x)
CLARNV returns a vector of random numbers from a uniform or normal distribution.
subroutine cptrfs(uplo, n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CPTRFS
subroutine cpttrf(n, d, e, info)
CPTTRF
subroutine cpttrs(uplo, n, nrhs, d, e, b, ldb, info)
CPTTRS
subroutine cptcon(n, d, e, anorm, rcond, rwork, info)
CPTCON
subroutine csscal(n, sa, cx, incx)
CSSCAL
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine cchkpt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
CCHKPT
subroutine claptm(uplo, n, nrhs, alpha, d, e, x, ldx, beta, b, ldb)
CLAPTM
subroutine cptt05(n, nrhs, d, e, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
CPTT05
subroutine clatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
CLATB4
subroutine cerrgt(path, nunit)
CERRGT
subroutine cptt01(n, d, e, df, ef, work, resid)
CPTT01
subroutine cget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
CGET04
subroutine cptt02(uplo, n, nrhs, d, e, x, ldx, b, ldb, resid)
CPTT02
subroutine clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS
subroutine sscal(n, sa, sx, incx)
SSCAL
subroutine scopy(n, sx, incx, sy, incy)
SCOPY