145 SUBROUTINE cgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND,
146 $ WORK, RWORK, INFO )
154 INTEGER INFO, KL, KU, LDAB, N
160 COMPLEX AB( LDAB, * ), WORK( * )
167 parameter( one = 1.0e+0, zero = 0.0e+0 )
170 LOGICAL LNOTI, ONENRM
172 INTEGER IX, J, JP, KASE, KASE1, KD, LM
173 REAL AINVNM, SCALE, SMLNUM
184 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 ), 1 )
268 CALL clatbs(
'Upper',
'No transpose',
'Non-unit', normin, n,
269 $ kl+ku, ab, ldab, work, scale, rwork, info )
274 CALL clatbs(
'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 ) - cdotc( lm, ab( kd+1, j ), 1,
288 work( jp ) = work( j )
298 IF( scale.NE.one )
THEN
299 ix = icamax( n, work, 1 )
300 IF( scale.LT.cabs1( work( ix ) )*smlnum .OR. scale.EQ.zero )
302 CALL csrscl( n, scale, work, 1 )
310 $ rcond = ( one / ainvnm ) / anorm
subroutine xerbla(srname, info)
subroutine caxpy(n, ca, cx, incx, cy, incy)
CAXPY
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.