176 SUBROUTINE zhetrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
184 INTEGER INFO, LDA, LWORK, N
188 COMPLEX*16 A( LDA, * ), WORK( * )
194 LOGICAL LQUERY, UPPER
195 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
200 EXTERNAL lsame, ilaenv
213 upper = lsame( uplo,
'U' )
214 lquery = ( lwork.EQ.-1 )
215 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
217 ELSE IF( n.LT.0 )
THEN
219 ELSE IF( lda.LT.max( 1, n ) )
THEN
221 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
229 nb = ilaenv( 1,
'ZHETRF', uplo, n, -1, -1, -1 )
235 CALL xerbla(
'ZHETRF', -info )
237 ELSE IF( lquery )
THEN
243 IF( nb.GT.1 .AND. nb.LT.n )
THEN
245 IF( lwork.LT.iws )
THEN
246 nb = max( lwork / ldwork, 1 )
247 nbmin = max( 2, ilaenv( 2,
'ZHETRF', uplo, n, -1, -1, -1 ) )
276 CALL zlahef( uplo, k, nb, kb, a, lda, ipiv, work, n, iinfo )
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, ipiv( k ),
322 CALL zhetf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ), iinfo )
328 IF( info.EQ.0 .AND. iinfo.GT.0 )
329 $ info = iinfo + k - 1
333 DO 30 j = k, k + kb - 1
334 IF( ipiv( j ).GT.0 )
THEN
335 ipiv( j ) = ipiv( j ) + k - 1
337 ipiv( j ) = ipiv( j ) - k + 1
subroutine xerbla(srname, info)
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...