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 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
subroutine xerbla(SRNAME, INFO)
XERBLA
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...