144 SUBROUTINE dgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND,
145 $ WORK, IWORK, INFO )
153 INTEGER INFO, KL, KU, LDAB, N
154 DOUBLE PRECISION ANORM, RCOND
157 INTEGER IPIV( * ), IWORK( * )
158 DOUBLE PRECISION AB( LDAB, * ), WORK( * )
164 DOUBLE PRECISION ONE, ZERO
165 parameter( one = 1.0d+0, zero = 0.0d+0 )
168 LOGICAL LNOTI, ONENRM
170 INTEGER IX, J, JP, KASE, KASE1, KD, LM
171 DOUBLE PRECISION AINVNM, SCALE, SMLNUM, T
179 DOUBLE PRECISION DDOT, DLAMCH
180 EXTERNAL lsame, idamax, ddot, dlamch
193 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
194 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
196 ELSE IF( n.LT.0 )
THEN
198 ELSE IF( kl.LT.0 )
THEN
200 ELSE IF( ku.LT.0 )
THEN
202 ELSE IF( ldab.LT.2*kl+ku+1 )
THEN
204 ELSE IF( anorm.LT.zero )
THEN
208 CALL xerbla(
'DGBCON', -info )
218 ELSE IF( anorm.EQ.zero )
THEN
222 smlnum = dlamch(
'Safe minimum' )
237 CALL dlacn2( n, work( n+1 ), work, iwork, ainvnm, kase, isave )
239 IF( kase.EQ.kase1 )
THEN
249 work( jp ) = work( j )
252 CALL daxpy( lm, -t, ab( kd+1, j ), 1, work( j+1 ), 1 )
258 CALL dlatbs(
'Upper',
'No transpose',
'Non-unit', normin, n,
259 $ kl+ku, ab, ldab, work, scale, work( 2*n+1 ),
265 CALL dlatbs(
'Upper',
'Transpose',
'Non-unit', normin, n,
266 $ kl+ku, ab, ldab, work, scale, work( 2*n+1 ),
272 DO 30 j = n - 1, 1, -1
274 work( j ) = work( j ) - ddot( lm, ab( kd+1, j ), 1,
279 work( jp ) = work( j )
289 IF( scale.NE.one )
THEN
290 ix = idamax( n, work, 1 )
291 IF( scale.LT.abs( work( ix ) )*smlnum .OR. scale.EQ.zero )
293 CALL drscl( n, scale, work, 1 )
301 $ rcond = ( one / ainvnm ) / anorm
subroutine xerbla(srname, info)
subroutine daxpy(n, da, dx, incx, dy, incy)
DAXPY
subroutine dgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, iwork, info)
DGBCON
subroutine dlacn2(n, v, x, isgn, est, kase, isave)
DLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...
subroutine dlatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, scale, cnorm, info)
DLATBS solves a triangular banded system of equations.
subroutine drscl(n, sa, sx, incx)
DRSCL multiplies a vector by the reciprocal of a real scalar.