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)
XERBLA
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...