214 INTEGER INFO, LDA, LWORK, N
218 DOUBLE PRECISION A( LDA, * ), WORK( * )
224 LOGICAL LQUERY, UPPER
225 INTEGER IINFO, IWS, J, K, KB, LDWORK, LWKOPT, NB, NBMIN
230 EXTERNAL lsame, ilaenv
243 upper = lsame( uplo,
'U' )
244 lquery = ( lwork.EQ.-1 )
245 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
247 ELSE IF( n.LT.0 )
THEN
249 ELSE IF( lda.LT.max( 1, n ) )
THEN
251 ELSE IF( lwork.LT.1 .AND. .NOT.lquery )
THEN
259 nb = ilaenv( 1,
'DSYTRF_ROOK', uplo, n, -1, -1, -1 )
260 lwkopt = max( 1, n*nb )
265 CALL xerbla(
'DSYTRF_ROOK', -info )
267 ELSE IF( lquery )
THEN
273 IF( nb.GT.1 .AND. nb.LT.n )
THEN
275 IF( lwork.LT.iws )
THEN
276 nb = max( lwork / ldwork, 1 )
277 nbmin = max( 2, ilaenv( 2,
'DSYTRF_ROOK',
278 $ uplo, n, -1, -1, -1 ) )
308 $ ipiv, work, ldwork, iinfo )
319 IF( info.EQ.0 .AND. iinfo.GT.0 )
350 CALL dlasyf_rook( uplo, n-k+1, nb, kb, a( k, k ), lda,
351 $ ipiv( k ), work, ldwork, iinfo )
356 CALL dsytf2_rook( uplo, n-k+1, a( k, k ), lda, ipiv( k ),
363 IF( info.EQ.0 .AND. iinfo.GT.0 )
364 $ info = iinfo + k - 1
368 DO 30 j = k, k + kb - 1
369 IF( ipiv( j ).GT.0 )
THEN
370 ipiv( j ) = ipiv( j ) + k - 1
372 ipiv( j ) = ipiv( j ) - k + 1
subroutine dsytf2_rook(uplo, n, a, lda, ipiv, info)
DSYTF2_ROOK computes the factorization of a real symmetric indefinite matrix using the bounded Bunch-...
subroutine dsytrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
DSYTRF_ROOK
subroutine dlasyf_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
DLASYF_ROOK *> DLASYF_ROOK computes a partial factorization of a real symmetric matrix using the boun...