181 SUBROUTINE dsytrf( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
189 INTEGER INFO, LDA, LWORK, N
193 DOUBLE PRECISION A( LDA, * ), WORK( * )
199 LOGICAL LQUERY, UPPER
200 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
205 EXTERNAL lsame, ilaenv
218 upper = lsame( uplo,
'U' )
219 lquery = ( lwork.EQ.-1 )
220 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
222 ELSE IF( n.LT.0 )
THEN
224 ELSE IF( lda.LT.max( 1, n ) )
THEN
226 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
234 nb = ilaenv( 1,
'DSYTRF', uplo, n, -1, -1, -1 )
235 lwkopt = max( 1, n*nb )
240 CALL xerbla(
'DSYTRF', -info )
242 ELSE IF( lquery )
THEN
248 IF( nb.GT.1 .AND. nb.LT.n )
THEN
250 IF( lwork.LT.iws )
THEN
251 nb = max( lwork / ldwork, 1 )
252 nbmin = max( 2, ilaenv( 2,
'DSYTRF', uplo, n, -1, -1, -1 ) )
281 CALL dlasyf( uplo, k, nb, kb, a, lda, ipiv, work, ldwork,
287 CALL dsytf2( uplo, k, a, lda, ipiv, iinfo )
293 IF( info.EQ.0 .AND. iinfo.GT.0 )
322 CALL dlasyf( uplo, n-k+1, nb, kb, a( k, k ), lda, ipiv( k ),
323 $ work, ldwork, iinfo )
328 CALL dsytf2( uplo, n-k+1, a( k, k ), lda, ipiv( k ), iinfo )
334 IF( info.EQ.0 .AND. iinfo.GT.0 )
335 $ info = iinfo + k - 1
339 DO 30 j = k, k + kb - 1
340 IF( ipiv( j ).GT.0 )
THEN
341 ipiv( j ) = ipiv( j ) + k - 1
343 ipiv( j ) = ipiv( j ) - k + 1
subroutine xerbla(srname, info)
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...