174 SUBROUTINE chetrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
182 INTEGER INFO, LDA, LWORK, N
186 COMPLEX A( LDA, * ), WORK( * )
192 LOGICAL LQUERY, UPPER
193 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
199 EXTERNAL lsame, ilaenv, sroundup_lwork
212 upper = lsame( uplo,
'U' )
213 lquery = ( lwork.EQ.-1 )
214 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
216 ELSE IF( n.LT.0 )
THEN
218 ELSE IF( lda.LT.max( 1, n ) )
THEN
220 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
228 nb = ilaenv( 1,
'CHETRF', uplo, n, -1, -1, -1 )
229 lwkopt = max( 1, n*nb )
230 work( 1 ) = sroundup_lwork( lwkopt )
234 CALL xerbla(
'CHETRF', -info )
236 ELSE IF( lquery )
THEN
242 IF( nb.GT.1 .AND. nb.LT.n )
THEN
244 IF( lwork.LT.iws )
THEN
245 nb = max( lwork / ldwork, 1 )
246 nbmin = max( 2, ilaenv( 2,
'CHETRF', uplo, n, -1, -1,
276 CALL clahef( uplo, k, nb, kb, a, lda, ipiv, work, n,
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,
324 CALL chetf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ),
331 IF( info.EQ.0 .AND. iinfo.GT.0 )
332 $ info = iinfo + k - 1
336 DO 30 j = k, k + kb - 1
337 IF( ipiv( j ).GT.0 )
THEN
338 ipiv( j ) = ipiv( j ) + k - 1
340 ipiv( j ) = ipiv( j ) - k + 1
352 work( 1 ) = sroundup_lwork( lwkopt )
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...