124 SUBROUTINE zgbt01( M, N, KL, KU, A, LDA, AFAC, LDAFAC, IPIV, WORK,
132 INTEGER KL, KU, LDA, LDAFAC, M, N
133 DOUBLE PRECISION RESID
137 COMPLEX*16 A( LDA, * ), AFAC( LDAFAC, * ), WORK( * )
143 DOUBLE PRECISION ZERO, ONE
144 parameter( zero = 0.0d+0, one = 1.0d+0 )
147 INTEGER I, I1, I2, IL, IP, IW, J, JL, JU, JUA, KD, LENJ
148 DOUBLE PRECISION ANORM, EPS
152 DOUBLE PRECISION DLAMCH, DZASUM
153 EXTERNAL dlamch, dzasum
159 INTRINSIC dble, dcmplx, max, min
166 IF( m.LE.0 .OR. n.LE.0 )
171 eps = dlamch(
'Epsilon' )
175 i1 = max( kd+1-j, 1 )
176 i2 = min( kd+m-j, kl+kd )
178 $ anorm = max( anorm, dzasum( i2-i1+1, a( i1, j ), 1 ) )
188 ju = min( kl+ku, j-1 )
190 lenj = min( m, j ) - j + ju + 1
192 CALL zcopy( lenj, afac( kd-ju, j ), 1, work, 1 )
193 DO 20 i = lenj + 1, ju + jl + 1
200 DO 30 i = min( m-1, j ), j - ju, -1
205 CALL zaxpy( il, t, afac( kd+1, i ), 1, work( iw+1 ),
210 work( iw ) = work( ip )
220 $
CALL zaxpy( jua+jl+1, -dcmplx( one ), a( ku+1-jua, j ),
221 $ 1, work( ju+1-jua ), 1 )
225 resid = max( resid, dzasum( ju+jl+1, work, 1 ) )
231 IF( anorm.LE.zero )
THEN
235 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine zaxpy(n, za, zx, incx, zy, incy)
ZAXPY
subroutine zcopy(n, zx, incx, zy, incy)
ZCOPY
subroutine zgbt01(m, n, kl, ku, a, lda, afac, ldafac, ipiv, work, resid)
ZGBT01