147 SUBROUTINE cgbcon( NORM, N, KL, KU, AB, LDAB, IPIV, ANORM, RCOND,
148 $ WORK, RWORK, INFO )
157 INTEGER INFO, KL, KU, LDAB, N
163 COMPLEX AB( ldab, * ), WORK( * )
170 parameter( one = 1.0e+0, zero = 0.0e+0 )
173 LOGICAL LNOTI, ONENRM
175 INTEGER IX, J, JP, KASE, KASE1, KD, LM
176 REAL AINVNM, SCALE, SMLNUM
187 EXTERNAL lsame, icamax, slamch, cdotc
193 INTRINSIC abs, aimag, min, real
199 cabs1( zdum ) = abs(
REAL( ZDUM ) ) + abs( AIMAG( zdum ) )
206 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
207 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN 209 ELSE IF( n.LT.0 )
THEN 211 ELSE IF( kl.LT.0 )
THEN 213 ELSE IF( ku.LT.0 )
THEN 215 ELSE IF( ldab.LT.2*kl+ku+1 )
THEN 217 ELSE IF( anorm.LT.zero )
THEN 221 CALL xerbla(
'CGBCON', -info )
231 ELSE IF( anorm.EQ.zero )
THEN 235 smlnum = slamch(
'Safe minimum' )
250 CALL clacn2( n, work( n+1 ), work, ainvnm, kase, isave )
252 IF( kase.EQ.kase1 )
THEN 262 work( jp ) = work( j )
265 CALL caxpy( lm, -t, ab( kd+1, j ), 1, work( j+1 ), 1 )
271 CALL clatbs(
'Upper',
'No transpose',
'Non-unit', normin, n,
272 $ kl+ku, ab, ldab, work, scale, rwork, info )
277 CALL clatbs(
'Upper',
'Conjugate transpose',
'Non-unit',
278 $ normin, n, kl+ku, ab, ldab, work, scale, rwork,
284 DO 30 j = n - 1, 1, -1
286 work( j ) = work( j ) - cdotc( lm, ab( kd+1, j ), 1,
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 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 xerbla(SRNAME, INFO)
XERBLA
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