143 SUBROUTINE cgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM,
145 $ WORK, RWORK, INFO )
153 INTEGER INFO, KL, KU, LDAB, N
159 COMPLEX AB( LDAB, * ), WORK( * )
166 PARAMETER ( ONE = 1.0e+0, zero = 0.0e+0 )
169 LOGICAL LNOTI, ONENRM
171 INTEGER IX, J, JP, KASE, KASE1, KD, LM
172 REAL AINVNM, SCALE, SMLNUM
183 EXTERNAL lsame, icamax, slamch, cdotc
190 INTRINSIC abs, aimag, min, real
196 cabs1( zdum ) = abs( real( zdum ) ) + abs( aimag( 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(
'CGBCON', -info )
228 ELSE IF( anorm.EQ.zero )
THEN
232 smlnum = slamch(
'Safe minimum' )
247 CALL clacn2( n, work( n+1 ), work, ainvnm, kase, isave )
249 IF( kase.EQ.kase1 )
THEN
259 work( jp ) = work( j )
262 CALL caxpy( lm, -t, ab( kd+1, j ), 1, work( j+1 ),
269 CALL clatbs(
'Upper',
'No transpose',
'Non-unit', normin,
271 $ kl+ku, ab, ldab, work, scale, rwork, info )
276 CALL clatbs(
'Upper',
'Conjugate transpose',
'Non-unit',
277 $ normin, n, kl+ku, ab, ldab, work, scale, rwork,
283 DO 30 j = n - 1, 1, -1
285 work( j ) = work( j ) - cdotc( lm, ab( kd+1, j ),
291 work( jp ) = work( j )
301 IF( scale.NE.one )
THEN
302 ix = icamax( n, work, 1 )
303 IF( scale.LT.cabs1( work( ix ) )*smlnum .OR. scale.EQ.zero )
305 CALL csrscl( n, scale, work, 1 )
313 $ rcond = ( one / ainvnm ) / anorm
subroutine cgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, rwork, info)
CGBCON
subroutine clacn2(n, v, x, est, kase, isave)
CLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...
subroutine clatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, scale, cnorm, info)
CLATBS solves a triangular banded system of equations.
subroutine csrscl(n, sa, sx, incx)
CSRSCL multiplies a vector by the reciprocal of a real scalar.