179 SUBROUTINE zsytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
187 INTEGER INFO, LDA, LWORK, N
191 COMPLEX*16 A( LDA, * ), WORK( * )
197 LOGICAL LQUERY, UPPER
198 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
203 EXTERNAL lsame, ilaenv
216 upper = lsame( uplo,
'U' )
217 lquery = ( lwork.EQ.-1 )
218 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
220 ELSE IF( n.LT.0 )
THEN
222 ELSE IF( lda.LT.max( 1, n ) )
THEN
224 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
232 nb = ilaenv( 1,
'ZSYTRF', uplo, n, -1, -1, -1 )
233 lwkopt = max( 1, n*nb )
238 CALL xerbla(
'ZSYTRF', -info )
240 ELSE IF( lquery )
THEN
246 IF( nb.GT.1 .AND. nb.LT.n )
THEN
248 IF( lwork.LT.iws )
THEN
249 nb = max( lwork / ldwork, 1 )
250 nbmin = max( 2, ilaenv( 2,
'ZSYTRF', uplo, n, -1, -1,
280 CALL zlasyf( uplo, k, nb, kb, a, lda, ipiv, work, n,
286 CALL zsytf2( uplo, k, a, lda, ipiv, iinfo )
292 IF( info.EQ.0 .AND. iinfo.GT.0 )
321 CALL zlasyf( uplo, n-k+1, nb, kb, a( k, k ), lda,
328 CALL zsytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ),
335 IF( info.EQ.0 .AND. iinfo.GT.0 )
336 $ info = iinfo + k - 1
340 DO 30 j = k, k + kb - 1
341 IF( ipiv( j ).GT.0 )
THEN
342 ipiv( j ) = ipiv( j ) + k - 1
344 ipiv( j ) = ipiv( j ) - k + 1
subroutine zsytf2(uplo, n, a, lda, ipiv, info)
ZSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting ...
subroutine zsytrf(uplo, n, a, lda, ipiv, work, lwork, info)
ZSYTRF
subroutine zlasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
ZLASYF computes a partial factorization of a complex symmetric matrix using the Bunch-Kaufman diagona...