126 SUBROUTINE zgbt01( M, N, KL, KU, A, LDA, AFAC, LDAFAC, IPIV, WORK,
135 INTEGER KL, KU, LDA, LDAFAC, M, N
136 DOUBLE PRECISION RESID
140 COMPLEX*16 A( lda, * ), AFAC( ldafac, * ), WORK( * )
146 DOUBLE PRECISION ZERO, ONE
147 parameter ( zero = 0.0d+0, one = 1.0d+0 )
150 INTEGER I, I1, I2, IL, IP, IW, J, JL, JU, JUA, KD, LENJ
151 DOUBLE PRECISION ANORM, EPS
155 DOUBLE PRECISION DLAMCH, DZASUM
156 EXTERNAL dlamch, dzasum
162 INTRINSIC dble, dcmplx, max, min
169 IF( m.LE.0 .OR. n.LE.0 )
174 eps = dlamch(
'Epsilon' )
178 i1 = max( kd+1-j, 1 )
179 i2 = min( kd+m-j, kl+kd )
181 $ anorm = max( anorm, dzasum( i2-i1+1, a( i1, j ), 1 ) )
191 ju = min( kl+ku, j-1 )
193 lenj = min( m, j ) - j + ju + 1
195 CALL zcopy( lenj, afac( kd-ju, j ), 1, work, 1 )
196 DO 20 i = lenj + 1, ju + jl + 1
203 DO 30 i = min( m-1, j ), j - ju, -1
208 CALL zaxpy( il, t, afac( kd+1, i ), 1, work( iw+1 ),
213 work( iw ) = work( ip )
223 $
CALL zaxpy( jua+jl+1, -dcmplx( one ), a( ku+1-jua, j ),
224 $ 1, work( ju+1-jua ), 1 )
228 resid = max( resid, dzasum( ju+jl+1, work, 1 ) )
234 IF( anorm.LE.zero )
THEN
238 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine zcopy(N, ZX, INCX, ZY, INCY)
ZCOPY
subroutine zgbt01(M, N, KL, KU, A, LDA, AFAC, LDAFAC, IPIV, WORK, RESID)
ZGBT01
subroutine zaxpy(N, ZA, ZX, INCX, ZY, INCY)
ZAXPY