174 SUBROUTINE zhetrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
182 INTEGER INFO, LDA, LWORK, N
186 COMPLEX*16 A( LDA, * ), WORK( * )
192 LOGICAL LQUERY, UPPER
193 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
198 EXTERNAL lsame, ilaenv
211 upper = lsame( uplo,
'U' )
212 lquery = ( lwork.EQ.-1 )
213 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
215 ELSE IF( n.LT.0 )
THEN
217 ELSE IF( lda.LT.max( 1, n ) )
THEN
219 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
227 nb = ilaenv( 1,
'ZHETRF', uplo, n, -1, -1, -1 )
228 lwkopt = max( 1, n*nb )
233 CALL xerbla(
'ZHETRF', -info )
235 ELSE IF( lquery )
THEN
241 IF( nb.GT.1 .AND. nb.LT.n )
THEN
243 IF( lwork.LT.iws )
THEN
244 nb = max( lwork / ldwork, 1 )
245 nbmin = max( 2, ilaenv( 2,
'ZHETRF', uplo, n, -1, -1,
275 CALL zlahef( uplo, k, nb, kb, a, lda, ipiv, work, n,
281 CALL zhetf2( uplo, k, a, lda, ipiv, iinfo )
287 IF( info.EQ.0 .AND. iinfo.GT.0 )
316 CALL zlahef( uplo, n-k+1, nb, kb, a( k, k ), lda,
323 CALL zhetf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ),
330 IF( info.EQ.0 .AND. iinfo.GT.0 )
331 $ info = iinfo + k - 1
335 DO 30 j = k, k + kb - 1
336 IF( ipiv( j ).GT.0 )
THEN
337 ipiv( j ) = ipiv( j ) + k - 1
339 ipiv( j ) = ipiv( j ) - k + 1
subroutine zhetf2(uplo, n, a, lda, ipiv, info)
ZHETF2 computes the factorization of a complex Hermitian matrix, using the diagonal pivoting method (...
subroutine zhetrf(uplo, n, a, lda, ipiv, work, lwork, info)
ZHETRF
subroutine zlahef(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
ZLAHEF computes a partial factorization of a complex Hermitian indefinite matrix using the Bunch-Kauf...