145 SUBROUTINE zgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND,
146 $ WORK, RWORK, INFO )
154 INTEGER INFO, KL, KU, LDAB, N
155 DOUBLE PRECISION ANORM, RCOND
159 DOUBLE PRECISION RWORK( * )
160 COMPLEX*16 AB( LDAB, * ), WORK( * )
166 DOUBLE PRECISION ONE, ZERO
167 parameter( one = 1.0d+0, zero = 0.0d+0 )
170 LOGICAL LNOTI, ONENRM
172 INTEGER IX, J, JP, KASE, KASE1, KD, LM
173 DOUBLE PRECISION AINVNM, SCALE, SMLNUM
182 DOUBLE PRECISION DLAMCH
184 EXTERNAL lsame, izamax, dlamch, zdotc
190 INTRINSIC abs, dble, dimag, min
193 DOUBLE PRECISION CABS1
196 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
203 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
204 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
206 ELSE IF( n.LT.0 )
THEN
208 ELSE IF( kl.LT.0 )
THEN
210 ELSE IF( ku.LT.0 )
THEN
212 ELSE IF( ldab.LT.2*kl+ku+1 )
THEN
214 ELSE IF( anorm.LT.zero )
THEN
218 CALL xerbla(
'ZGBCON', -info )
228 ELSE IF( anorm.EQ.zero )
THEN
232 smlnum = dlamch(
'Safe minimum' )
247 CALL zlacn2( n, work( n+1 ), work, ainvnm, kase, isave )
249 IF( kase.EQ.kase1 )
THEN
259 work( jp ) = work( j )
262 CALL zaxpy( lm, -t, ab( kd+1, j ), 1, work( j+1 ), 1 )
268 CALL zlatbs(
'Upper',
'No transpose',
'Non-unit', normin, n,
269 $ kl+ku, ab, ldab, work, scale, rwork, info )
274 CALL zlatbs(
'Upper',
'Conjugate transpose',
'Non-unit',
275 $ normin, n, kl+ku, ab, ldab, work, scale, rwork,
281 DO 30 j = n - 1, 1, -1
283 work( j ) = work( j ) - zdotc( lm, ab( kd+1, j ), 1,
288 work( jp ) = work( j )
298 IF( scale.NE.one )
THEN
299 ix = izamax( n, work, 1 )
300 IF( scale.LT.cabs1( work( ix ) )*smlnum .OR. scale.EQ.zero )
302 CALL zdrscl( n, scale, work, 1 )
310 $ rcond = ( one / ainvnm ) / anorm
subroutine xerbla(srname, info)
subroutine zaxpy(n, za, zx, incx, zy, incy)
ZAXPY
subroutine zgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, rwork, info)
ZGBCON
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.