138 $ LDAF, IPIV, C, CAPPLY,
139 $ INFO, WORK, RWORK )
148 INTEGER n, lda, ldaf, info
152 COMPLEX*16 a( lda, * ), af( ldaf, * ), work( * )
160DOUBLE PRECISION ainvnm, anorm, tmp
178 DOUBLE PRECISION cabs1
181 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
188 upper =
lsame( uplo, 'u
' )
189.NOT..AND..NOT.
IF( UPPER LSAME( UPLO, 'l
' ) ) THEN
191.LT.
ELSE IF( N0 ) THEN
193.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
195.LT.
ELSE IF( LDAFMAX( 1, N ) ) THEN
203 IF ( LSAME( UPLO, 'u
' ) ) UP = .TRUE.
213 TMP = TMP + CABS1( A( J, I ) ) / C( J )
216 TMP = TMP + CABS1( A( I, J ) ) / C( J )
220 TMP = TMP + CABS1( A( J, I ) )
223 TMP = TMP + CABS1( A( I, J ) )
227 ANORM = MAX( ANORM, TMP )
234 TMP = TMP + CABS1( A( I, J ) ) / C( J )
237 TMP = TMP + CABS1( A( J, I ) ) / C( J )
241 TMP = TMP + CABS1( A( I, J ) )
244 TMP = TMP + CABS1( A( J, I ) )
248 ANORM = MAX( ANORM, TMP )
255 ZLA_HERCOND_C = 1.0D+0
257.EQ.
ELSE IF( ANORM 0.0D+0 ) THEN
267 CALL ZLACN2( N, WORK( N+1 ), WORK, AINVNM, KASE, ISAVE )
274 WORK( I ) = WORK( I ) * RWORK( I )
278 CALL ZHETRS( 'u
', N, 1, AF, LDAF, IPIV,
281 CALL ZHETRS( 'l
', N, 1, AF, LDAF, IPIV,
289 WORK( I ) = WORK( I ) * C( I )
298 WORK( I ) = WORK( I ) * C( I )
303 CALL ZHETRS( 'u
', N, 1, AF, LDAF, IPIV,
306 CALL ZHETRS( 'l
', N, 1, AF, LDAF, IPIV,
313 WORK( I ) = WORK( I ) * RWORK( I )
321.NE.
IF( AINVNM 0.0D+0 )
322 $ ZLA_HERCOND_C = 1.0D+0 / AINVNM
subroutine xerbla(srname, info)
XERBLA
logical function lsame(ca, cb)
LSAME
subroutine zhetrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
ZHETRS
double precision function zla_hercond_c(uplo, n, a, lda, af, ldaf, ipiv, c, capply, info, work, rwork)
ZLA_HERCOND_C computes the infinity norm condition number of op(A)*inv(diag(c)) for Hermitian indefin...
subroutine zlacn2(n, v, x, est, kase, isave)
ZLACN2 estimates the 1-norm of a square matrix, using reverse communication for evaluating matrix-vec...