139 SUBROUTINE dgbt02( TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B,
149 INTEGER KL, KU, LDA, LDB, LDX, M, N, NRHS
150 DOUBLE PRECISION RESID
153 DOUBLE PRECISION A( lda, * ), B( ldb, * ), X( ldx, * )
159 DOUBLE PRECISION ZERO, ONE
160 parameter ( zero = 0.0d+0, one = 1.0d+0 )
163 INTEGER I1, I2, J, KD, N1
164 DOUBLE PRECISION ANORM, BNORM, EPS, XNORM
168 DOUBLE PRECISION DASUM, DLAMCH
169 EXTERNAL lsame, dasum, dlamch
181 IF( m.LE.0 .OR. n.LE.0 .OR. nrhs.LE.0 )
THEN
188 eps = dlamch(
'Epsilon' )
192 i1 = max( kd+1-j, 1 )
193 i2 = min( kd+m-j, kl+kd )
194 anorm = max( anorm, dasum( i2-i1+1, a( i1, j ), 1 ) )
196 IF( anorm.LE.zero )
THEN
201 IF( lsame( trans,
'T' ) .OR. lsame( trans,
'C' ) )
THEN
210 CALL dgbmv( trans, m, n, kl, ku, -one, a, lda, x( 1, j ), 1,
211 $ one, b( 1, j ), 1 )
219 bnorm = dasum( n1, b( 1, j ), 1 )
220 xnorm = dasum( n1, x( 1, j ), 1 )
221 IF( xnorm.LE.zero )
THEN
224 resid = max( resid, ( ( bnorm / anorm ) / xnorm ) / eps )
subroutine dgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGBMV
subroutine dgbt02(TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, RESID)
DGBT02