176 SUBROUTINE chetrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
184 INTEGER INFO, LDA, LWORK, N
188 COMPLEX A( LDA, * ), WORK( * )
194 LOGICAL LQUERY, UPPER
195 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
201 EXTERNAL lsame, ilaenv, sroundup_lwork
214 upper = lsame( uplo,
'U' )
215 lquery = ( lwork.EQ.-1 )
216 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
218 ELSE IF( n.LT.0 )
THEN
220 ELSE IF( lda.LT.max( 1, n ) )
THEN
222 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
230 nb = ilaenv( 1,
'CHETRF', uplo, n, -1, -1, -1 )
232 work( 1 ) = sroundup_lwork(lwkopt)
236 CALL xerbla(
'CHETRF', -info )
238 ELSE IF( lquery )
THEN
244 IF( nb.GT.1 .AND. nb.LT.n )
THEN
246 IF( lwork.LT.iws )
THEN
247 nb = max( lwork / ldwork, 1 )
248 nbmin = max( 2, ilaenv( 2,
'CHETRF', uplo, n, -1, -1, -1 ) )
277 CALL clahef( uplo, k, nb, kb, a, lda, ipiv, work, n, iinfo )
282 CALL chetf2( uplo, k, a, lda, ipiv, iinfo )
288 IF( info.EQ.0 .AND. iinfo.GT.0 )
317 CALL clahef( uplo, n-k+1, nb, kb, a( k, k ), lda, ipiv( k ),
323 CALL chetf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ), iinfo )
329 IF( info.EQ.0 .AND. iinfo.GT.0 )
330 $ info = iinfo + k - 1
334 DO 30 j = k, k + kb - 1
335 IF( ipiv( j ).GT.0 )
THEN
336 ipiv( j ) = ipiv( j ) + k - 1
338 ipiv( j ) = ipiv( j ) - k + 1
350 work( 1 ) = sroundup_lwork(lwkopt)
subroutine xerbla(srname, info)
subroutine chetf2(uplo, n, a, lda, ipiv, info)
CHETF2 computes the factorization of a complex Hermitian matrix, using the diagonal pivoting method (...
subroutine chetrf(uplo, n, a, lda, ipiv, work, lwork, info)
CHETRF
subroutine clahef(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
CLAHEF computes a partial factorization of a complex Hermitian indefinite matrix using the Bunch-Kauf...