119 SUBROUTINE zpocon( UPLO, N, A, LDA, ANORM, RCOND, WORK, RWORK,
129 DOUBLE PRECISION ANORM, RCOND
132 DOUBLE PRECISION RWORK( * )
133 COMPLEX*16 A( lda, * ), WORK( * )
139 DOUBLE PRECISION ONE, ZERO
140 parameter( one = 1.0d+0, zero = 0.0d+0 )
146 DOUBLE PRECISION AINVNM, SCALE, SCALEL, SCALEU, SMLNUM
155 DOUBLE PRECISION DLAMCH
156 EXTERNAL lsame, izamax, dlamch
162 INTRINSIC abs, dble, dimag, max
165 DOUBLE PRECISION CABS1
168 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
175 upper = lsame( uplo,
'U' )
176 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 178 ELSE IF( n.LT.0 )
THEN 180 ELSE IF( lda.LT.max( 1, n ) )
THEN 182 ELSE IF( anorm.LT.zero )
THEN 186 CALL xerbla(
'ZPOCON', -info )
196 ELSE IF( anorm.EQ.zero )
THEN 200 smlnum = dlamch(
'Safe minimum' )
207 CALL zlacn2( n, work( n+1 ), work, ainvnm, kase, isave )
213 CALL zlatrs(
'Upper',
'Conjugate transpose',
'Non-unit',
214 $ normin, n, a, lda, work, scalel, rwork, info )
219 CALL zlatrs(
'Upper',
'No transpose',
'Non-unit', normin, n,
220 $ a, lda, work, scaleu, rwork, info )
225 CALL zlatrs(
'Lower',
'No transpose',
'Non-unit', normin, n,
226 $ a, lda, work, scalel, rwork, info )
231 CALL zlatrs(
'Lower',
'Conjugate transpose',
'Non-unit',
232 $ normin, n, a, lda, work, scaleu, rwork, info )
237 scale = scalel*scaleu
238 IF( scale.NE.one )
THEN 239 ix = izamax( n, work, 1 )
240 IF( scale.LT.cabs1( work( ix ) )*smlnum .OR. scale.EQ.zero )
242 CALL zdrscl( n, scale, work, 1 )
250 $ rcond = ( one / ainvnm ) / anorm
subroutine xerbla(SRNAME, INFO)
XERBLA
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 zpocon(UPLO, N, A, LDA, ANORM, RCOND, WORK, RWORK, INFO)
ZPOCON
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 zdrscl(N, SA, SX, INCX)
ZDRSCL multiplies a vector by the reciprocal of a real scalar.