LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine dlarrb | ( | integer | n, |
double precision, dimension( * ) | d, | ||
double precision, dimension( * ) | lld, | ||
integer | ifirst, | ||
integer | ilast, | ||
double precision | rtol1, | ||
double precision | rtol2, | ||
integer | offset, | ||
double precision, dimension( * ) | w, | ||
double precision, dimension( * ) | wgap, | ||
double precision, dimension( * ) | werr, | ||
double precision, dimension( * ) | work, | ||
integer, dimension( * ) | iwork, | ||
double precision | pivmin, | ||
double precision | spdiam, | ||
integer | twist, | ||
integer | info ) |
DLARRB provides limited bisection to locate eigenvalues for more accuracy.
Download DLARRB + dependencies [TGZ] [ZIP] [TXT]
!> !> Given the relatively robust representation(RRR) L D L^T, DLARRB !> does bisection to refine the eigenvalues of L D L^T, !> W( IFIRST-OFFSET ) through W( ILAST-OFFSET ), to more accuracy. Initial !> guesses for these eigenvalues are input in W, the corresponding estimate !> of the error in these guesses and their gaps are input in WERR !> and WGAP, respectively. During bisection, intervals !> [left, right] are maintained by storing their mid-points and !> semi-widths in the arrays W and WERR respectively. !>
[in] | N | !> N is INTEGER !> The order of the matrix. !> |
[in] | D | !> D is DOUBLE PRECISION array, dimension (N) !> The N diagonal elements of the diagonal matrix D. !> |
[in] | LLD | !> LLD is DOUBLE PRECISION array, dimension (N-1) !> The (N-1) elements L(i)*L(i)*D(i). !> |
[in] | IFIRST | !> IFIRST is INTEGER !> The index of the first eigenvalue to be computed. !> |
[in] | ILAST | !> ILAST is INTEGER !> The index of the last eigenvalue to be computed. !> |
[in] | RTOL1 | !> RTOL1 is DOUBLE PRECISION !> |
[in] | RTOL2 | !> RTOL2 is DOUBLE PRECISION !> Tolerance for the convergence of the bisection intervals. !> An interval [LEFT,RIGHT] has converged if !> RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) ) !> where GAP is the (estimated) distance to the nearest !> eigenvalue. !> |
[in] | OFFSET | !> OFFSET is INTEGER !> Offset for the arrays W, WGAP and WERR, i.e., the IFIRST-OFFSET !> through ILAST-OFFSET elements of these arrays are to be used. !> |
[in,out] | W | !> W is DOUBLE PRECISION array, dimension (N) !> On input, W( IFIRST-OFFSET ) through W( ILAST-OFFSET ) are !> estimates of the eigenvalues of L D L^T indexed IFIRST through !> ILAST. !> On output, these estimates are refined. !> |
[in,out] | WGAP | !> WGAP is DOUBLE PRECISION array, dimension (N-1) !> On input, the (estimated) gaps between consecutive !> eigenvalues of L D L^T, i.e., WGAP(I-OFFSET) is the gap between !> eigenvalues I and I+1. Note that if IFIRST = ILAST !> then WGAP(IFIRST-OFFSET) must be set to ZERO. !> On output, these gaps are refined. !> |
[in,out] | WERR | !> WERR is DOUBLE PRECISION array, dimension (N) !> On input, WERR( IFIRST-OFFSET ) through WERR( ILAST-OFFSET ) are !> the errors in the estimates of the corresponding elements in W. !> On output, these errors are refined. !> |
[out] | WORK | !> WORK is DOUBLE PRECISION array, dimension (2*N) !> Workspace. !> |
[out] | IWORK | !> IWORK is INTEGER array, dimension (2*N) !> Workspace. !> |
[in] | PIVMIN | !> PIVMIN is DOUBLE PRECISION !> The minimum pivot in the Sturm sequence. !> |
[in] | SPDIAM | !> SPDIAM is DOUBLE PRECISION !> The spectral diameter of the matrix. !> |
[in] | TWIST | !> TWIST is INTEGER !> The twist index for the twisted factorization that is used !> for the negcount. !> TWIST = N: Compute negcount from L D L^T - LAMBDA I = L+ D+ L+^T !> TWIST = 1: Compute negcount from L D L^T - LAMBDA I = U- D- U-^T !> TWIST = R: Compute negcount from L D L^T - LAMBDA I = N(r) D(r) N(r) !> |
[out] | INFO | !> INFO is INTEGER !> Error flag. !> |
Definition at line 191 of file dlarrb.f.