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...