146 SUBROUTINE dgbtf2( M, N, KL, KU, AB, LDAB, IPIV, INFO )
154 INTEGER info, kl, ku, ldab, m, n
158 DOUBLE PRECISION ab( ldab, * )
164 DOUBLE PRECISION one, zero
165 parameter( one = 1.0d+0, zero = 0.0d+0 )
168 INTEGER i, j, jp, ju, km, kv
192 ELSE IF( n.LT.0 )
THEN
194 ELSE IF( kl.LT.0 )
THEN
196 ELSE IF( ku.LT.0 )
THEN
198 ELSE IF( ldab.LT.kl+kv+1 )
THEN
202 CALL
xerbla(
'DGBTF2', -info )
208 IF( m.EQ.0 .OR. n.EQ.0 )
215 DO 20 j = ku + 2, min( kv, n )
216 DO 10 i = kv - j + 2, kl
226 DO 40 j = 1, min( m, n )
240 jp =
idamax( km+1, ab( kv+1, j ), 1 )
241 ipiv( j ) = jp + j - 1
242 IF( ab( kv+jp, j ).NE.zero )
THEN
243 ju = max( ju, min( j+ku+jp-1, n ) )
248 $ CALL
dswap( ju-j+1, ab( kv+jp, j ), ldab-1,
249 $ ab( kv+1, j ), ldab-1 )
255 CALL
dscal( km, one / ab( kv+1, j ), ab( kv+2, j ), 1 )
260 $ CALL
dger( km, ju-j, -one, ab( kv+2, j ), 1,
261 $ ab( kv, j+1 ), ldab-1, ab( kv+1, j+1 ),