145 SUBROUTINE cchkgt( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
146 $ A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT )
154 INTEGER NN, NNS, NOUT
159 INTEGER IWORK( * ), NSVAL( * ), NVAL( * )
161 COMPLEX A( * ), AF( * ), B( * ), WORK( * ), X( * ),
169 parameter( one = 1.0e+0, zero = 0.0e+0 )
171 parameter( ntypes = 12 )
173 parameter( ntests = 7 )
176 LOGICAL TRFCON, ZEROT
177 CHARACTER DIST, NORM, ,
179 INTEGER I, IMAT, IN, INFO, IRHS, ITRAN, IX, IZERO, J,
180 $ k, kl, koff, ku, lda, m, mode, n, nerrs, nfail,
182 REAL AINVNM, ANORM, COND, RCOND, RCONDC, RCONDI,
186 CHARACTER TRANSS( 3 )
187 INTEGER ISEED( 4 ), ISEEDY( 4 )
188 REAL RESULT( NTESTS )
193 EXTERNAL clangt, scasum,
sget06
210 COMMON / infoc / infot, nunit, ok, lerr
211 COMMON / srnamc / srnamt
214 DATA iseedy / 0, 0, 0, 1 / , transs /
'N',
'T',
219 path( 1: 1 ) =
'Complex precision'
225 iseed( i ) = iseedy( i )
231 $
CALL cerrge( path, nout )
245 DO 100 imat = 1, nimat
249 IF( .NOT.dotype( imat ) )
254 CALL clatb4( path, imat, n, n,
TYPE, kl, ku, anorm, mode,
257 zerot = imat.GE.8 .AND. imat.LE.10
262 koff =
max( 2-ku, 3-
max( 1, n ) )
264 CALL clatms( n, n, dist, iseed,
TYPE, rwork, mode, cond,
265 $ anorm, kl, ku,
'Z', af( koff ), 3, work,
271 CALL alaerh( path,
'CLATMS', info, 0,
' ', n, n, kl,
272 $ ku, -1, imat, nfail, nerrs, nout )
278 CALL ccopy( n-1, af( 4 ), 3, a, 1 )
279 CALL ccopy( n-1, af( 3 ), 3, a( n+m+1 ), 1 )
281 CALL ccopy( n, af( 2 ), 3, a( m+1 ), 1 )
287 IF( .NOT.zerot .OR. .NOT.dotype( 7 ) )
THEN
292 CALL clarnv( 2, iseed, n+2*m, a )
294 $
CALL csscal( n+2*m, anorm, a, 1 )
295 ELSE IF( izero.GT.0 )
THEN
300 IF( izero.EQ.1 )
THEN
304 ELSE IF( izero.EQ.n )
THEN
308 a( 2*n-2+izero ) = z( 1 )
309 a( n-1+izero ) = z( 2 )
316 IF( .NOT.zerot )
THEN
318 ELSE IF( imat.EQ.8 )
THEN
326 ELSE IF( imat.EQ.9 )
THEN
334 DO 20 i = izero, n - 1
348 CALL ccopy( n+2*m, a, 1, af, 1 )
350 CALL cgttrf( n, af, af( m+1 ), af( n+m+1 ), af( n+2*m+1 ),
356 $
CALL alaerh( path,
'CGTTRF', info, izero,
' ', n, n, 1,
357 $ 1, -1, imat, nfail, nerrs, nout )
360 CALL cgtt01( n, a, a( m+1 ), a( n+m+1 ), af, af( m+1 ),
361 $ af( n+m+1 ), af( n+2*m+1 ), iwork, work, lda,
362 $ rwork, result( 1 ) )
366 IF( result( 1 ).GE.thresh )
THEN
367 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
368 $
CALL alahd( nout, path )
369 WRITE( nout, fmt = 9999 )n, imat, 1, result( 1 )
375 trans = transs( itran )
376 IF( itran.EQ.1 )
THEN
381 ANORM = CLANGT( NORM, N, A, A( M+1 ), A( N+M+1 ) )
383.NOT.
IF( TRFCON ) THEN
394 CALL CGTTRS( TRANS, N, 1, AF, AF( M+1 ),
395 $ AF( N+M+1 ), AF( N+2*M+1 ), IWORK, X,
397 AINVNM = MAX( AINVNM, SCASUM( N, X, 1 ) )
402.LE..OR..LE.
IF( ANORMZERO AINVNMZERO ) THEN
405 RCONDC = ( ONE / ANORM ) / AINVNM
407.EQ.
IF( ITRAN1 ) THEN
421 CALL CGTCON( NORM, N, AF, AF( M+1 ), AF( N+M+1 ),
422 $ AF( N+2*M+1 ), IWORK, ANORM, RCOND, WORK,
428 $ CALL ALAERH( PATH, 'cgtcon', INFO, 0, NORM, N, N, -1,
429 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
431 RESULT( 7 ) = SGET06( RCOND, RCONDC )
435.GE.
IF( RESULT( 7 )THRESH ) THEN
436.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
437 $ CALL ALAHD( NOUT, PATH )
438 WRITE( NOUT, FMT = 9997 )NORM, N, IMAT, 7,
457 CALL CLARNV( 2, ISEED, N, XACT( IX ) )
462 TRANS = TRANSS( ITRAN )
463.EQ.
IF( ITRAN1 ) THEN
471 CALL CLAGTM( TRANS, N, NRHS, ONE, A,
472 $ A( M+1 ), A( N+M+1 ), XACT, LDA,
478 CALL CLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
480 CALL CGTTRS( TRANS, N, NRHS, AF, AF( M+1 ),
481 $ AF( N+M+1 ), AF( N+2*M+1 ), IWORK, X,
487 $ CALL ALAERH( PATH, 'cgttrs', INFO, 0, TRANS, N, N,
488 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
491 CALL CLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
492 CALL CGTT02( TRANS, N, NRHS, A, A( M+1 ), A( N+M+1 ),
493 $ X, LDA, WORK, LDA, RESULT( 2 ) )
498 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
505 CALL CGTRFS( TRANS, N, NRHS, A, A( M+1 ), A( N+M+1 ),
506 $ AF, AF( M+1 ), AF( N+M+1 ),
507 $ AF( N+2*M+1 ), IWORK, B, LDA, X, LDA,
508 $ RWORK, RWORK( NRHS+1 ), WORK,
509 $ RWORK( 2*NRHS+1 ), INFO )
514 $ CALL ALAERH( PATH, 'cgtrfs', INFO, 0, TRANS, N, N,
515 $ -1, -1, NRHS, IMAT, NFAIL, NERRS,
518 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
520 CALL CGTT05( TRANS, N, NRHS, A, A( M+1 ), A( N+M+1 ),
521 $ B, LDA, X, LDA, XACT, LDA, RWORK,
522 $ RWORK( NRHS+1 ), RESULT( 5 ) )
528.GE.
IF( RESULT( K )THRESH ) THEN
529.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
530 $ CALL ALAHD( NOUT, PATH )
531 WRITE( NOUT, FMT = 9998 )TRANS, N, NRHS, IMAT,
544 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
546 9999 FORMAT( 12X, 'n =
', I5, ',
', 10X, ' type ', I2, ', test(
', I2,
548 9998 FORMAT( ' trans=
''', A1, ''', n =
', I5, ', nrhs=
', I3, ',
type ',
549 $ I2, ', test(
', I2, ') =
', G12.5 )
550 9997 FORMAT( ' norm =
''', A1, ''', n =
', I5, ',
', 10X, ' type ', I2,
551 $ ', test(
', I2, ') =
', G12.5 )
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 cgttrf(n, dl, d, du, du2, ipiv, info)
CGTTRF
subroutine cgttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb, info)
CGTTRS
subroutine cgtcon(norm, n, dl, d, du, du2, ipiv, anorm, rcond, work, info)
CGTCON
subroutine cgtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CGTRFS
subroutine clagtm(trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, ldb)
CLAGTM performs a matrix-matrix product of the form C = αAB+βC, where A is a tridiagonal matrix,...
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 csscal(n, sa, cx, incx)
CSSCAL
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine cgtt01(n, dl, d, du, dlf, df, duf, du2, ipiv, work, ldwork, rwork, resid)
CGTT01
subroutine cgtt02(trans, n, nrhs, dl, d, du, x, ldx, b, ldb, resid)
CGTT02
subroutine clatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
CLATB4
subroutine cgtt05(trans, n, nrhs, dl, d, du, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
CGTT05
subroutine cchkgt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
CCHKGT
subroutine cerrge(path, nunit)
CERRGE
subroutine cget04(n, nrhs, x, ldx, xact, ldxact, rcond, resid)
CGET04
subroutine clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS
real function sget06(rcond, rcondc)
SGET06