141 SUBROUTINE dtbcon( NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK,
149 CHARACTER DIAG, NORM, UPLO
150 INTEGER INFO, KD, LDAB, N
151 DOUBLE PRECISION RCOND
155 DOUBLE PRECISION AB( LDAB, * ), WORK( * )
161 DOUBLE PRECISION ONE, ZERO
162 parameter( one = 1.0d+0, zero = 0.0d+0 )
165 LOGICAL NOUNIT, ONENRM, UPPER
167 INTEGER IX, KASE, KASE1
168 DOUBLE PRECISION AINVNM, ANORM, SCALE, SMLNUM, XNORM
176 DOUBLE PRECISION DLAMCH, DLANTB
177 EXTERNAL lsame, idamax, dlamch, dlantb
183 INTRINSIC abs, dble, max
190 upper = lsame( uplo,
'U' )
191 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
192 nounit = lsame( diag,
'N' )
194 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
196 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
198 ELSE IF( .NOT.nounit .AND. .NOT.lsame( diag,
'U' ) )
THEN
200 ELSE IF( n.LT.0 )
THEN
202 ELSE IF( kd.LT.0 )
THEN
204 ELSE IF( ldab.LT.kd+1 )
THEN
208 CALL xerbla(
'DTBCON', -info )
220 smlnum = dlamch(
'Safe minimum' )*dble( max( 1, n ) )
224 anorm = dlantb( norm, uplo, diag, n, kd, ab, ldab, work )
228 IF( anorm.GT.zero )
THEN
241 CALL dlacn2( n, work( n+1 ), work, iwork, ainvnm, kase, isave )
243 IF( kase.EQ.kase1 )
THEN
247 CALL dlatbs( uplo,
'No transpose', diag, normin, n, kd,
248 $ ab, ldab, work, scale, work( 2*n+1 ), info )
253 CALL dlatbs( uplo,
'Transpose', diag, normin, n, kd, ab,
254 $ ldab, work, scale, work( 2*n+1 ), info )
260 IF( scale.NE.one )
THEN
261 ix = idamax( n, work, 1 )
262 xnorm = abs( work( ix ) )
263 IF( scale.LT.xnorm*smlnum .OR. scale.EQ.zero )
265 CALL drscl( n, scale, work, 1 )
273 $ rcond = ( one / anorm ) / ainvnm
subroutine xerbla(srname, info)
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.
subroutine dtbcon(norm, uplo, diag, n, kd, ab, ldab, rcond, work, iwork, info)
DTBCON