181 SUBROUTINE csytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
189 INTEGER INFO, LDA, LWORK, N
193 COMPLEX A( LDA, * ), WORK( * )
199 LOGICAL LQUERY, UPPER
200 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
206 EXTERNAL lsame, ilaenv, sroundup_lwork
219 upper = lsame( uplo,
'U' )
220 lquery = ( lwork.EQ.-1 )
221 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
223 ELSE IF( n.LT.0 )
THEN
225 ELSE IF( lda.LT.max( 1, n ) )
THEN
227 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
235 nb = ilaenv( 1,
'CSYTRF', uplo, n, -1, -1, -1 )
236 lwkopt = max( 1, n*nb )
237 work( 1 ) = sroundup_lwork(lwkopt)
241 CALL xerbla(
'CSYTRF', -info )
243 ELSE IF( lquery )
THEN
249 IF( nb.GT.1 .AND. nb.LT.n )
THEN
251 IF( lwork.LT.iws )
THEN
252 nb = max( lwork / ldwork, 1 )
253 nbmin = max( 2, ilaenv( 2,
'CSYTRF', uplo, n, -1, -1, -1 ) )
282 CALL clasyf( uplo, k, nb, kb, a, lda, ipiv, work, n, iinfo )
287 CALL csytf2( uplo, k, a, lda, ipiv, iinfo )
293 IF( info.EQ.0 .AND. iinfo.GT.0 )
322 CALL clasyf( uplo, n-k+1, nb, kb, a( k, k ), lda, ipiv( k ),
328 CALL csytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ), iinfo )
334 IF( info.EQ.0 .AND. iinfo.GT.0 )
335 $ info = iinfo + k - 1
339 DO 30 j = k, k + kb - 1
340 IF( ipiv( j ).GT.0 )
THEN
341 ipiv( j ) = ipiv( j ) + k - 1
343 ipiv( j ) = ipiv( j ) - k + 1
355 work( 1 ) = sroundup_lwork(lwkopt)
subroutine xerbla(srname, info)
subroutine csytf2(uplo, n, a, lda, ipiv, info)
CSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting ...
subroutine csytrf(uplo, n, a, lda, ipiv, work, lwork, info)
CSYTRF
subroutine clasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
CLASYF computes a partial factorization of a complex symmetric matrix using the Bunch-Kaufman diagona...