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 - 1
337 ipiv( j ) = ipiv( j ) - k + 1
subroutine xerbla(SRNAME, INFO)
XERBLA
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...
subroutine chetf2(UPLO, N, A, LDA, IPIV, INFO)
CHETF2 computes the factorization of a complex Hermitian matrix, using the diagonal pivoting method (...