181 SUBROUTINE ssytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
189 INTEGER INFO, LDA, LWORK, N
193 REAL 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,
'SSYTRF', uplo, n, -1, -1, -1 )
236 lwkopt = max( 1, n*nb )
237 work( 1 ) = sroundup_lwork(lwkopt)
241 CALL xerbla(
'SSYTRF', -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,
'SSYTRF', uplo, n, -1, -1, -1 ) )
282 CALL slasyf( uplo, k, nb, kb, a, lda, ipiv, work, ldwork,
288 CALL ssytf2( uplo, k, a, lda, ipiv, iinfo )
294 IF( info.EQ.0 .AND. iinfo.GT.0 )
323 CALL slasyf( uplo, n-k+1, nb, kb, a( k, k ), lda, ipiv( k ),
324 $ work, ldwork, iinfo )
329 CALL ssytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ), iinfo )
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
356 work( 1 ) = sroundup_lwork(lwkopt)
subroutine xerbla(srname, info)
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...