179 SUBROUTINE dsytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
187 INTEGER INFO, LDA, LWORK, N
191 DOUBLE PRECISION A( LDA, * ), WORK( * )
197 LOGICAL LQUERY, UPPER
198 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
203 EXTERNAL lsame, ilaenv
216 upper = lsame( uplo,
'U' )
217 lquery = ( lwork.EQ.-1 )
218 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
220 ELSE IF( n.LT.0 )
THEN
222 ELSE IF( lda.LT.max( 1, n ) )
THEN
224 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
232 nb = ilaenv( 1,
'DSYTRF', uplo, n, -1, -1, -1 )
233 lwkopt = max( 1, n*nb )
238 CALL xerbla(
'DSYTRF', -info )
240 ELSE IF( lquery )
THEN
246 IF( nb.GT.1 .AND. nb.LT.n )
THEN
248 IF( lwork.LT.iws )
THEN
249 nb = max( lwork / ldwork, 1 )
250 nbmin = max( 2, ilaenv( 2,
'DSYTRF', uplo, n, -1, -1,
280 CALL dlasyf( uplo, k, nb, kb, a, lda, ipiv, work, ldwork,
286 CALL dsytf2( uplo, k, a, lda, ipiv, iinfo )
292 IF( info.EQ.0 .AND. iinfo.GT.0 )
321 CALL dlasyf( uplo, n-k+1, nb, kb, a( k, k ), lda,
323 $ work, ldwork, iinfo )
328 CALL dsytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ),
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
subroutine dsytf2(uplo, n, a, lda, ipiv, info)
DSYTF2 computes the factorization of a real symmetric indefinite matrix, using the diagonal pivoting ...
subroutine dsytrf(uplo, n, a, lda, ipiv, work, lwork, info)
DSYTRF
subroutine dlasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
DLASYF computes a partial factorization of a real symmetric matrix using the Bunch-Kaufman diagonal p...