141 SUBROUTINE ztbcon( NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK,
149 CHARACTER DIAG, NORM, UPLO
150 INTEGER INFO, KD, LDAB, N
151 DOUBLE PRECISION RCOND
154 DOUBLE PRECISION RWORK( * )
155 COMPLEX*16 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
177 DOUBLE PRECISION DLAMCH, ZLANTB
178 EXTERNAL lsame, izamax, dlamch, zlantb
184 INTRINSIC abs, dble, dimag, max
187 DOUBLE PRECISION CABS1
190 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
197 upper = lsame( uplo,
'U' )
198 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
199 nounit = lsame( diag,
'N' )
201 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN 203 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 205 ELSE IF( .NOT.nounit .AND. .NOT.lsame( diag,
'U' ) )
THEN 207 ELSE IF( n.LT.0 )
THEN 209 ELSE IF( kd.LT.0 )
THEN 211 ELSE IF( ldab.LT.kd+1 )
THEN 215 CALL xerbla(
'ZTBCON', -info )
227 smlnum = dlamch(
'Safe minimum' )*dble( max( n, 1 ) )
231 anorm = zlantb( norm, uplo, diag, n, kd, ab, ldab, rwork )
235 IF( anorm.GT.zero )
THEN 248 CALL zlacn2( n, work( n+1 ), work, ainvnm, kase, isave )
250 IF( kase.EQ.kase1 )
THEN 254 CALL zlatbs( uplo,
'No transpose', diag, normin, n, kd,
255 $ ab, ldab, work, scale, rwork, info )
260 CALL zlatbs( uplo,
'Conjugate transpose', diag, normin,
261 $ n, kd, ab, ldab, work, scale, rwork, info )
267 IF( scale.NE.one )
THEN 268 ix = izamax( n, work, 1 )
269 xnorm = cabs1( work( ix ) )
270 IF( scale.LT.xnorm*smlnum .OR. scale.EQ.zero )
272 CALL zdrscl( n, scale, work, 1 )
280 $ rcond = ( one / anorm ) / ainvnm
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztbcon(NORM, UPLO, DIAG, N, KD, AB, LDAB, RCOND, WORK, RWORK, INFO)
ZTBCON
subroutine zlatbs(UPLO, TRANS, DIAG, NORMIN, N, KD, AB, LDAB, X, SCALE, CNORM, INFO)
ZLATBS solves a triangular banded system of equations.
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 zdrscl(N, SA, SX, INCX)
ZDRSCL multiplies a vector by the reciprocal of a real scalar.