122 SUBROUTINE zgecon( NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK,
132 DOUBLE PRECISION ANORM, RCOND
135 DOUBLE PRECISION RWORK( * )
136 COMPLEX*16 A( LDA, * ), WORK( * )
142 DOUBLE PRECISION ONE, ZERO
143 parameter( one = 1.0d+0, zero = 0.0d+0 )
148 INTEGER IX, KASE, KASE1
149 DOUBLE PRECISION AINVNM, SCALE, SL, SMLNUM, SU
158 DOUBLE PRECISION DLAMCH
159 EXTERNAL lsame, izamax, dlamch
165 INTRINSIC abs, dble, dimag, max
168 DOUBLE PRECISION CABS1
171 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
178 onenrm = norm.EQ.
'1' .OR. lsame( norm,
'O' )
179 IF( .NOT.onenrm .AND. .NOT.lsame( norm,
'I' ) )
THEN
181 ELSE IF( n.LT.0 )
THEN
183 ELSE IF( lda.LT.max( 1, n ) )
THEN
185 ELSE IF( anorm.LT.zero )
THEN
189 CALL xerbla(
'ZGECON', -info )
199 ELSE IF( anorm.EQ.zero )
THEN
203 smlnum = dlamch(
'Safe minimum' )
216 CALL zlacn2( n, work( n+1 ), work, ainvnm, kase, isave )
218 IF( kase.EQ.kase1 )
THEN
222 CALL zlatrs(
'Lower',
'No transpose',
'Unit', normin, n, a,
223 $ lda, work, sl, rwork, info )
227 CALL zlatrs(
'Upper',
'No transpose',
'Non-unit', normin, n,
228 $ a, lda, work, su, rwork( n+1 ), info )
233 CALL zlatrs(
'Upper',
'Conjugate transpose',
'Non-unit',
234 $ normin, n, a, lda, work, su, rwork( n+1 ),
239 CALL zlatrs(
'Lower',
'Conjugate transpose',
'Unit', normin,
240 $ n, a, lda, work, sl, rwork, info )
247 IF( scale.NE.one )
THEN
248 ix = izamax( n, work, 1 )
249 IF( scale.LT.cabs1( work( ix ) )*smlnum .OR. scale.EQ.zero )
251 CALL zdrscl( n, scale, work, 1 )
259 $ rcond = ( one / ainvnm ) / anorm
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zgecon(NORM, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO)
ZGECON
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 zlatrs(UPLO, TRANS, DIAG, NORMIN, N, A, LDA, X, SCALE, CNORM, INFO)
ZLATRS solves a triangular system of equations with the scale factor set to prevent overflow.
subroutine zdrscl(N, SA, SX, INCX)
ZDRSCL multiplies a vector by the reciprocal of a real scalar.