159 SUBROUTINE ctbt02( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X,
160 $ LDX, B, LDB, WORK, RWORK, RESID )
167 CHARACTER DIAG, TRANS, UPLO
168 INTEGER KD, LDAB, LDB, LDX, N, NRHS
173 COMPLEX AB( LDAB, * ), B( LDB, * ), WORK( * ),
181 parameter( zero = 0.0e+0, one = 1.0e+0 )
185 REAL ANORM, BNORM, EPS, XNORM
189 REAL CLANTB, SCASUM, SLAMCH
190 EXTERNAL lsame, clantb, scasum, slamch
202 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
209 IF( lsame( trans,
'N' ) )
THEN
210 anorm = clantb(
'1', uplo, diag, n, kd, ab, ldab, rwork )
212 anorm = clantb(
'I', uplo, diag, n, kd, ab, ldab, rwork )
217 eps = slamch(
'Epsilon' )
218 IF( anorm.LE.zero )
THEN
228 CALL ccopy( n, x( 1, j ), 1, work, 1 )
229 CALL ctbmv( uplo, trans, diag, n, kd, ab, ldab, work, 1 )
230 CALL caxpy( n, cmplx( -one ), b( 1, j ), 1, work, 1 )
231 bnorm = scasum( n, work, 1 )
232 xnorm = scasum( n, x( 1, j ), 1 )
233 IF( xnorm.LE.zero )
THEN
236 resid = max( resid, ( ( bnorm / anorm ) / xnorm ) / eps )
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY
subroutine ctbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBMV
subroutine ctbt02(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X, LDX, B, LDB, WORK, RWORK, RESID)
CTBT02