152 SUBROUTINE dtbt02( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X,
153 $ LDX, B, LDB, WORK, RESID )
160 CHARACTER DIAG, TRANS, UPLO
161 INTEGER KD, LDAB, LDB, LDX, N, NRHS
162 DOUBLE PRECISION RESID
165 DOUBLE PRECISION AB( LDAB, * ), B( LDB, * ), WORK( * ),
172 DOUBLE PRECISION ZERO, ONE
173 parameter( zero = 0.0d+0, one = 1.0d+0 )
177 DOUBLE PRECISION ANORM, BNORM, EPS, XNORM
181 DOUBLE PRECISION DASUM, DLAMCH,
182 EXTERNAL lsame, dasum, dlamch,
dlantb
194 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
201 IF( lsame( trans,
'N' ) )
THEN
202 anorm =
dlantb( '1
', UPLO, DIAG, N, KD, AB, LDAB, WORK )
204 ANORM = DLANTB( 'i
', UPLO, DIAG, N, KD, AB, LDAB, WORK )
209 EPS = DLAMCH( 'epsilon
' )
210.LE.
IF( ANORMZERO ) THEN
220 CALL DCOPY( N, X( 1, J ), 1, WORK, 1 )
221 CALL DTBMV( UPLO, TRANS, DIAG, N, KD, AB, LDAB, WORK, 1 )
222 CALL DAXPY( N, -ONE, B( 1, J ), 1, WORK, 1 )
223 BNORM = DASUM( N, WORK, 1 )
224 XNORM = DASUM( N, X( 1, J ), 1 )
225.LE.
IF( XNORMZERO ) THEN
228 RESID = MAX( RESID, ( ( BNORM / ANORM ) / XNORM ) / EPS )
double precision function dlantb(norm, uplo, diag, n, k, ab, ldab, work)
DLANTB returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
subroutine daxpy(n, da, dx, incx, dy, incy)
DAXPY
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
subroutine dtbmv(uplo, trans, diag, n, k, a, lda, x, incx)
DTBMV
subroutine dtbt02(uplo, trans, diag, n, kd, nrhs, ab, ldab, x, ldx, b, ldb, work, resid)
DTBT02