145 SUBROUTINE cgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND,
146 $ WORK, RWORK, INFO )
154 INTEGER INFO, KL, KU, LDAB, N
167 parameter( one = 1.0e+0, zero = 0.0e+0 )
170 LOGICAL LNOTI, ONENRM
172 INTEGER IX, J, JP, KASE, KASE1, KD, LM
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.LT.
ELSE IF( N0 ) THEN
208.LT.
ELSE IF( KL0 ) THEN
210.LT.
ELSE IF( KU0 ) THEN
212.LT.
ELSE IF( LDAB2*KL+KU+1 ) THEN
214.LT.
ELSE IF( ANORMZERO ) THEN
218 CALL XERBLA( 'cgbcon', -INFO )
228.EQ.
ELSE IF( ANORMZERO ) THEN
232 SMLNUM = SLAMCH( 'safe minimum
' )
247 CALL CLACN2( N, WORK( N+1 ), WORK, AINVNM, KASE, ISAVE )
249.EQ.
IF( KASEKASE1 ) 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.NE.
IF( SCALEONE ) THEN
299 IX = ICAMAX( N, WORK, 1 )
300.LT..OR..EQ.
IF( SCALECABS1( WORK( IX ) )*SMLNUM SCALEZERO )
302 CALL CSRSCL( N, SCALE, WORK, 1 )
310 $ RCOND = ( ONE / AINVNM ) / ANORM
subroutine xerbla(srname, info)
XERBLA
subroutine cgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, rwork, info)
CGBCON
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.
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 caxpy(n, ca, cx, incx, cy, incy)
CAXPY