SRC/slarre.f(3)
π NAME π
okay so this page is SRC/slarre.f, bestie β and the manual-name vibe we folded in near the top is the Library Functions Manual. The header title is SRC/slarre.f(3), and we are obsessed with her already π
.
β¨ SYNOPSIS β¨
π§ Functions/Subroutines π§
subroutine slarre (range, n, vl, vu, il, iu, d, e, e2, rtol1, rtol2,
spltol, nsplit, isplit, m, w, werr, wgap, iblock, indexw, gers,
pivmin, work, iwork, info)
SLARRE given the tridiagonal matrix T, sets small off-diagonal elements to zero and for each unreduced block Ti, finds base representations and eigenvalues.
π Function/Subroutine Documentation π
πΈ subroutine slarre πΈ
subroutine slarre (character range, integer n, real vl, real vu, integer il,
integer iu, real, dimension( * ) d, real, dimension( * ) e, real,
dimension( * ) e2, real rtol1, real rtol2, real spltol, integer nsplit,
integer, dimension( * ) isplit, integer m, real, dimension( * ) w, real,
dimension( * ) werr, real, dimension( * ) wgap, integer, dimension( * )
iblock, integer, dimension( * ) indexw, real, dimension( * ) gers, real
pivmin, real, dimension( * ) work, integer, dimension( * ) iwork,
integer info)
SLARRE given the tridiagonal matrix T, sets small off-diagonal elements to zero and for each unreduced block Ti, finds base representations and eigenvalues.
π₯ Purpose π₯
okay so the Purpose is giving main character energy: to find the desired eigenvalues of a given real symmetric tridiagonal matrix T, SLARRE sets any off-diagonal elements to zero, and for each unreduced block T_i, it finds:
- (a) a suitable shift at one end of the block's spectrum,
- (b) the base representation,
T_i - sigma_i I = L_i D_i L_i^T, and - (c) eigenvalues of each
L_i D_i L_i^T.
The representations and eigenvalues found are then used by SSTEMR to compute the eigenvectors of T.
The accuracy varies depending on whether bisection is used to find a few eigenvalues or the dqds algorithm (subroutine SLASQ2) to compute all and then discard any unwanted one.
As an added benefit, SLARRE also outputs the n Gerschgorin intervals for the matrices L_i D_i L_i^T.
π Parameters π
RANGEβRANGE is CHARACTER*1= 'A': () all eigenvalues will be found.= 'V': () all eigenvalues in the half-open interval (VL, VU] will be found.= 'I': () the IL-th through IU-th eigenvalues (of the entire matrix) will be found.
NβN is INTEGER- The order of the matrix.
N > 0.
- The order of the matrix.
VLβVL is REAL- If
RANGE='V', the lower bound for the eigenvalues. Eigenvalues less than or equal toVL, or greater thanVU, will not be returned.VL < VU. - If
RANGE='I'or='A',SLARREcomputes bounds on the desired part of the spectrum.
- If
VUβVU is REAL- If
RANGE='V', the upper bound for the eigenvalues. Eigenvalues less than or equal toVL, or greater thanVU, will not be returned.VL < VU. - If
RANGE='I'or='A',SLARREcomputes bounds on the desired part of the spectrum.
- If
ILβIL is INTEGER- If
RANGE='I', the index of the smallest eigenvalue to be returned.1 <= IL <= IU <= N.
- If
IUβIU is INTEGER- If
RANGE='I', the index of the largest eigenvalue to be returned.1 <= IL <= IU <= N.
- If
DβD is REAL array, dimension (N)- On entry, the
Ndiagonal elements of the tridiagonal matrixT. - On exit, the
Ndiagonal elements of the diagonal matricesD_i.
- On entry, the
EβE is REAL array, dimension (N)- On entry, the first
(N-1)entries contain the subdiagonal elements of the tridiagonal matrixT;E(N)need not be set. - On exit,
Econtains the subdiagonal elements of the unit bidiagonal matricesL_i. The entriesE( ISPLIT( I ) ),1 <= I <= NSPLIT, contain the base pointssigma_ion output.
- On entry, the first
E2βE2 is REAL array, dimension (N)- On entry, the first
(N-1)entries contain the SQUARES of the subdiagonal elements of the tridiagonal matrixT;E2(N)need not be set. - On exit, the entries
E2( ISPLIT( I ) ),1 <= I <= NSPLIT, have been set to zero.
- On entry, the first
RTOL1βRTOL1 is REALRTOL2βRTOL2 is REAL- Parameters for bisection. An interval
[LEFT,RIGHT]has converged ifRIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
- Parameters for bisection. An interval
SPLTOLβSPLTOL is REAL- The threshold for splitting.
NSPLITβNSPLIT is INTEGER- The number of blocks
Tsplits into.1 <= NSPLIT <= N.
- The number of blocks
ISPLITβISPLIT is INTEGER array, dimension (N)- The splitting points, at which
Tbreaks up into blocks. The first block consists of rows/columns1toISPLIT(1), the second of rows/columnsISPLIT(1)+1throughISPLIT(2), etc., and theNSPLIT-th consists of rows/columnsISPLIT(NSPLIT-1)+1throughISPLIT(NSPLIT)=N.
- The splitting points, at which
MβM is INTEGER- The total number of eigenvalues (of all
L_i D_i L_i^T) found.
- The total number of eigenvalues (of all
WβW is REAL array, dimension (N)- The first
Melements contain the eigenvalues. The eigenvalues of each of the blocks,L_i D_i L_i^T, are sorted in ascending order (SLARREmay use the remainingN-Melements as workspace).
- The first
WERRβWERR is REAL array, dimension (N)- The error bound on the corresponding eigenvalue in
W.
- The error bound on the corresponding eigenvalue in
WGAPβWGAP is REAL array, dimension (N)- The separation from the right neighbor eigenvalue in
W. The gap is only with respect to the eigenvalues of the same block as each block has its own representation tree. Exception: at the right end of a block we store the left gap.
- The separation from the right neighbor eigenvalue in
IBLOCKβIBLOCK is INTEGER array, dimension (N)- The indices of the blocks (submatrices) associated with the corresponding eigenvalues in
W;IBLOCK(i)=1if eigenvalueW(i)belongs to the first block from the top,=2ifW(i)belongs to the second block, etc.
- The indices of the blocks (submatrices) associated with the corresponding eigenvalues in
INDEXWβINDEXW is INTEGER array, dimension (N)- The indices of the eigenvalues within each block (submatrix); for example,
INDEXW(i)= 10andIBLOCK(i)=2imply that thei-th eigenvalueW(i)is the10-th eigenvalue in block2.
- The indices of the eigenvalues within each block (submatrix); for example,
GERSβGERS is REAL array, dimension (2*N)- The
NGerschgorin intervals (thei-th Gerschgorin interval is(GERS(2*i-1), GERS(2*i)).
- The
PIVMINβPIVMIN is REAL- The minimum pivot in the Sturm sequence for
T.
- The minimum pivot in the Sturm sequence for
WORKβWORK is REAL array, dimension (6*N)- Workspace.
IWORKβIWORK is INTEGER array, dimension (5*N)- Workspace.
INFOβINFO is INTEGER= 0: successful exit> 0: A problem occurred inSLARRE.< 0: One of the called subroutines signaled an internal problem. Needs inspection of the corresponding parameterIINFOfor further information.=-1: Problem inSLARRD.= 2: No base representation could be found inMAXTRYiterations. IncreasingMAXTRYand recompilation might be a remedy.=-3: Problem inSLARRBwhen computing the refined root representation forSLASQ2.=-4: Problem inSLARRBwhen preforming bisection on the desired part of the spectrum.=-5: Problem inSLASQ2.=-6: Problem inSLASQ2.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Further Details π
The base representations are required to suffer very little element growth and consequently define all their eigenvalues to high relative accuracy.
π Contributors π
- Beresford Parlett, University of California, Berkeley, USA
- Jim Demmel, University of California, Berkeley, USA
- Inderjit Dhillon, University of Texas, Austin, USA
- Osni Marques, LBNL/NERSC, USA
- Christof Voemel, University of California, Berkeley, USA
Definition at line 301 of file slarre.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
okay thatβs the whole page, bestie β footer vibe check: LAPACK Version 3.12.0 and SRC/slarre.f(3). Thereβs no date in the footer, so no fake date, periodt π
β¨π«Ά
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms