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 )
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.NOT..AND..NOT.
IF( ONENRM LSAME( NORM, 'i
' ) ) THEN
196.LT.
ELSE IF( N0 ) THEN
198.LT.
ELSE IF( KL0 ) THEN
200.LT.
ELSE IF( KU0 ) THEN
202.LT.
ELSE IF( LDAB2*KL+KU+1 ) THEN
204.LT.
ELSE IF( ANORMZERO ) THEN
208 CALL XERBLA( 'dgbcon', -INFO )
218.EQ.
ELSE IF( ANORMZERO ) THEN
222 SMLNUM = DLAMCH( 'safe minimum
' )
237 CALL DLACN2( N, WORK( N+1 ), WORK, IWORK, AINVNM, KASE, ISAVE )
239.EQ.
IF( KASEKASE1 ) 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.NE.
IF( SCALEONE ) THEN
290 IX = IDAMAX( N, WORK, 1 )
291.LT..OR..EQ.
IF( SCALEABS( WORK( IX ) )*SMLNUM SCALEZERO )
293 CALL DRSCL( N, SCALE, WORK, 1 )
301 $ RCOND = ( ONE / AINVNM ) / ANORM
subroutine xerbla(srname, info)
XERBLA
subroutine dgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, iwork, info)
DGBCON
subroutine drscl(n, sa, sx, incx)
DRSCL multiplies a vector by the reciprocal of a real scalar.
subroutine dlatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, scale, cnorm, info)
DLATBS solves a triangular banded system of equations.
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 daxpy(n, da, dx, incx, dy, incy)
DAXPY