183 SUBROUTINE ssytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
192 INTEGER INFO, LDA, LWORK, N
196 REAL A( lda, * ), WORK( * )
202 LOGICAL LQUERY, UPPER
203 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
208 EXTERNAL lsame, ilaenv
221 upper = lsame( uplo,
'U' )
222 lquery = ( lwork.EQ.-1 )
223 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
225 ELSE IF( n.LT.0 )
THEN
227 ELSE IF( lda.LT.max( 1, n ) )
THEN
229 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
237 nb = ilaenv( 1,
'SSYTRF', uplo, n, -1, -1, -1 )
243 CALL xerbla(
'SSYTRF', -info )
245 ELSE IF( lquery )
THEN
251 IF( nb.GT.1 .AND. nb.LT.n )
THEN
253 IF( lwork.LT.iws )
THEN
254 nb = max( lwork / ldwork, 1 )
255 nbmin = max( 2, ilaenv( 2,
'SSYTRF', uplo, n, -1, -1, -1 ) )
284 CALL slasyf( uplo, k, nb, kb, a, lda, ipiv, work, ldwork,
290 CALL ssytf2( uplo, k, a, lda, ipiv, iinfo )
296 IF( info.EQ.0 .AND. iinfo.GT.0 )
325 CALL slasyf( uplo, n-k+1, nb, kb, a( k, k ), lda, ipiv( k ),
326 $ work, ldwork, iinfo )
331 CALL ssytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ), iinfo )
337 IF( info.EQ.0 .AND. iinfo.GT.0 )
338 $ info = iinfo + k - 1
342 DO 30 j = k, k + kb - 1
343 IF( ipiv( j ).GT.0 )
THEN
344 ipiv( j ) = ipiv( j ) + k - 1
346 ipiv( j ) = ipiv( j ) - k + 1
subroutine ssytf2(UPLO, N, A, LDA, IPIV, INFO)
SSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting ...
subroutine xerbla(SRNAME, INFO)
XERBLA
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...