179 SUBROUTINE ssytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
187 INTEGER INFO, LDA, LWORK, N
191 REAL A( LDA, * ), WORK( * )
197 LOGICAL LQUERY, UPPER
198 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
204 EXTERNAL lsame, ilaenv, sroundup_lwork
217 upper = lsame( uplo,
'U' )
218 lquery = ( lwork.EQ.-1 )
219 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
221 ELSE IF( n.LT.0 )
THEN
223 ELSE IF( lda.LT.max( 1, n ) )
THEN
225 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
233 nb = ilaenv( 1,
'SSYTRF', uplo, n, -1, -1, -1 )
234 lwkopt = max( 1, n*nb )
235 work( 1 ) = sroundup_lwork( lwkopt )
239 CALL xerbla(
'SSYTRF', -info )
241 ELSE IF( lquery )
THEN
247 IF( nb.GT.1 .AND. nb.LT.n )
THEN
249 IF( lwork.LT.iws )
THEN
250 nb = max( lwork / ldwork, 1 )
251 nbmin = max( 2, ilaenv( 2,
'SSYTRF', uplo, n, -1, -1,
281 CALL slasyf( uplo, k, nb, kb, a, lda, ipiv, work, ldwork,
287 CALL ssytf2( uplo, k, a, lda, ipiv, iinfo )
293 IF( info.EQ.0 .AND. iinfo.GT.0 )
322 CALL slasyf( uplo, n-k+1, nb, kb, a( k, k ), lda,
324 $ work, ldwork, iinfo )
329 CALL ssytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ),
336 IF( info.EQ.0 .AND. iinfo.GT.0 )
337 $ info = iinfo + k - 1
341 DO 30 j = k, k + kb - 1
342 IF( ipiv( j ).GT.0 )
THEN
343 ipiv( j ) = ipiv( j ) + k - 1
345 ipiv( j ) = ipiv( j ) - k + 1
358 work( 1 ) = sroundup_lwork( lwkopt )
subroutine ssytf2(uplo, n, a, lda, ipiv, info)
SSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting ...
subroutine ssytrf(uplo, n, a, lda, ipiv, work, lwork, info)
SSYTRF
subroutine slasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
SLASYF computes a partial factorization of a real symmetric matrix using the Bunch-Kaufman diagonal p...