139 SUBROUTINE dtbcon( NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND,
148 CHARACTER DIAG, NORM, UPLO
149 INTEGER INFO, KD, LDAB, N
150 DOUBLE PRECISION RCOND
154 DOUBLE PRECISION AB( LDAB, * ), WORK( * )
160 DOUBLE PRECISION ONE, ZERO
161 PARAMETER ( ONE = 1.0d+0, zero = 0.0d+0 )
164 LOGICAL NOUNIT, ONENRM, UPPER
166 INTEGER IX, KASE, KASE1
167 DOUBLE PRECISION AINVNM, ANORM, SCALE, SMLNUM, XNORM
175 DOUBLE PRECISION DLAMCH, DLANTB
176 EXTERNAL lsame, idamax, dlamch, dlantb
182 INTRINSIC abs, dble, max
189 upper = lsame( uplo,
'U' )
190 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
191 nounit = lsame( diag,
'N' )
193 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
195 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
197 ELSE IF( .NOT.nounit .AND. .NOT.lsame( diag,
'U' ) )
THEN
199 ELSE IF( n.LT.0 )
THEN
201 ELSE IF( kd.LT.0 )
THEN
203 ELSE IF( ldab.LT.kd+1 )
THEN
207 CALL xerbla(
'DTBCON', -info )
219 smlnum = dlamch(
'Safe minimum' )*dble( max( 1, n ) )
223 anorm = dlantb( norm, uplo, diag, n, kd, ab, ldab, work )
227 IF( anorm.GT.zero )
THEN
240 CALL dlacn2( n, work( n+1 ), work, iwork, ainvnm, kase,
243 IF( kase.EQ.kase1 )
THEN
247 CALL dlatbs( uplo,
'No transpose', diag, normin, n,
249 $ ab, ldab, work, scale, work( 2*n+1 ), info )
254 CALL dlatbs( uplo,
'Transpose', diag, normin, n, kd,
256 $ ldab, work, scale, work( 2*n+1 ), info )
262 IF( scale.NE.one )
THEN
263 ix = idamax( n, work, 1 )
264 xnorm = abs( work( ix ) )
265 IF( scale.LT.xnorm*smlnum .OR. scale.EQ.zero )
267 CALL drscl( n, scale, work, 1 )
275 $ rcond = ( one / anorm ) / ainvnm
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