139 SUBROUTINE ztbcon( NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND,
148 CHARACTER DIAG, NORM, UPLO
149 INTEGER INFO, KD, LDAB, N
150 DOUBLE PRECISION RCOND
153 DOUBLE PRECISION RWORK( * )
154 COMPLEX*16 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
176 DOUBLE PRECISION DLAMCH, ZLANTB
177 EXTERNAL lsame, izamax, dlamch, zlantb
183 INTRINSIC abs, dble, dimag, max
186 DOUBLE PRECISION CABS1
189 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
196 upper = lsame( uplo,
'U' )
197 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
198 nounit = lsame( diag,
'N' )
200 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
202 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
204 ELSE IF( .NOT.nounit .AND. .NOT.lsame( diag,
'U' ) )
THEN
206 ELSE IF( n.LT.0 )
THEN
208 ELSE IF( kd.LT.0 )
THEN
210 ELSE IF( ldab.LT.kd+1 )
THEN
214 CALL xerbla(
'ZTBCON', -info )
226 smlnum = dlamch(
'Safe minimum' )*dble( max( n, 1 ) )
230 anorm = zlantb( norm, uplo, diag, n, kd, ab, ldab, rwork )
234 IF( anorm.GT.zero )
THEN
247 CALL zlacn2( n, work( n+1 ), work, ainvnm, kase, isave )
249 IF( kase.EQ.kase1 )
THEN
253 CALL zlatbs( uplo,
'No transpose', diag, normin, n,
255 $ ab, ldab, work, scale, rwork, info )
260 CALL zlatbs( uplo,
'Conjugate transpose', diag,
262 $ n, kd, ab, ldab, work, scale, rwork, info )
268 IF( scale.NE.one )
THEN
269 ix = izamax( n, work, 1 )
270 xnorm = cabs1( work( ix ) )
271 IF( scale.LT.xnorm*smlnum .OR. scale.EQ.zero )
273 CALL zdrscl( n, scale, work, 1 )
281 $ rcond = ( one / anorm ) / ainvnm
subroutine zlacn2(n, v, x, est, kase, isave)
ZLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...
subroutine zlatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, scale, cnorm, info)
ZLATBS solves a triangular banded system of equations.
subroutine zdrscl(n, sa, sx, incx)
ZDRSCL multiplies a vector by the reciprocal of a real scalar.
subroutine ztbcon(norm, uplo, diag, n, kd, ab, ldab, rcond, work, rwork, info)
ZTBCON