154 SUBROUTINE dtbt02( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X,
155 $ ldx,
b, ldb, work, resid )
163 CHARACTER diag, trans, uplo
164 INTEGER kd, ldab, ldb, ldx, n, nrhs
165 DOUBLE PRECISION resid
168 DOUBLE PRECISION ab( ldab, * ),
b( ldb, * ), work( * ),
175 DOUBLE PRECISION zero, one
176 parameter( zero = 0.0d+0, one = 1.0d+0 )
180 DOUBLE PRECISION anorm, bnorm, eps, xnorm
197 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
204 IF(
lsame( trans,
'N' ) )
THEN
205 anorm =
dlantb(
'1', uplo, diag, n, kd, ab, ldab, work )
207 anorm =
dlantb(
'I', uplo, diag, n, kd, ab, ldab, work )
213 IF( anorm.LE.zero )
THEN
223 CALL
dcopy( n,
x( 1,
j ), 1, work, 1 )
224 CALL
dtbmv( uplo, trans, diag, n, kd, ab, ldab, work, 1 )
225 CALL
daxpy( n, -one,
b( 1,
j ), 1, work, 1 )
226 bnorm =
dasum( n, work, 1 )
227 xnorm =
dasum( n,
x( 1,
j ), 1 )
228 IF( xnorm.LE.zero )
THEN
231 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, or the element of largest absolute value of a triangular band matrix.
LOGICAL function lsame(CA, CB)
LSAME
subroutine dcopy(N, DX, INCX, DY, INCY)
DCOPY
subroutine dtbt02(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X, LDX, B, LDB, WORK, RESID)
DTBT02
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine dtbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBMV
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
DOUBLE PRECISION function dlamch(CMACH)
DLAMCH
DOUBLE PRECISION function dasum(N, DX, INCX)
DASUM