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
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,
'CHETRF', uplo, n, -1, -1, -1 )
235 CALL xerbla(
'CHETRF', -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,
'CHETRF', uplo, n, -1, -1, -1 ) )
276 CALL clahef( uplo, k, nb, kb, a, lda, ipiv, work, n, iinfo )
281 CALL chetf2( uplo, k, a, lda, ipiv, iinfo )
287 IF( info.EQ.0 .AND. iinfo.GT.0 )
316 CALL clahef( uplo, n-k+1, nb, kb, a( k, k ), lda, ipiv( k ),
322 CALL chetf2( 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
337 ipiv( j ) = ipiv( j ) - k + 1
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...