SRC/dlarre.f(3)
π NAME π
SRC/dlarre.f β Library Functions Manual, bestie. We're in LAPACK land and this one is a whole tridiagonal-eigenvalue situation, no cap.
β¨ SYNOPSIS β¨
π§ Functions/Subroutines
subroutine dlarreβ DLARRE given the tridiagonal matrixT, sets small off-diagonal elements to zero and for each unreduced blockTi, finds base representations and eigenvalues.
subroutine dlarre (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)
π Function/Subroutine Documentation π
subroutine dlarre (character range, integer n, double precision vl, double
precision vu, integer il, integer iu, double precision, dimension( * )
d, double precision, dimension( * ) e, double precision, dimension( * )
e2, double precision rtol1, double precision rtol2, double precision
spltol, integer nsplit, integer, dimension( * ) isplit, integer m,
double precision, dimension( * ) w, double precision, dimension( * )
werr, double precision, dimension( * ) wgap, integer, dimension( * )
iblock, integer, dimension( * ) indexw, double precision, dimension( * )
gers, double precision pivmin, double precision, dimension( * ) work,
integer, dimension( * ) iwork, integer info)
DLARRE 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 whole goal: to find the desired eigenvalues of a given real symmetric tridiagonal matrix T. DLARRE 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 DSTEMR 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 DLASQ2) to compute all and then discard any unwanted one. As an added benefit, DLARRE also outputs the n Gerschgorin intervals for the matrices L_i D_i L_i^T. Love that for us. π
π§Ύ Parameters
RANGEβRANGEisCHARACTER*1= 'A': ()β all eigenvalues will be found.= 'V': ()β all eigenvalues in the half-open interval(VL, VU]will be found.= 'I': ()β theIL-th throughIU-th eigenvalues (of the entire matrix) will be found.
NβNisINTEGER. The order of the matrix.N > 0.VLβVLisDOUBLE PRECISION. IfRANGE='V', the lower bound for the eigenvalues. Eigenvalues less than or equal toVL, or greater thanVU, will not be returned.VL < VU. IfRANGE='I'or='A', DLARRE computes bounds on the desired part of the spectrum.VUβVUisDOUBLE PRECISION. IfRANGE='V', the upper bound for the eigenvalues. Eigenvalues less than or equal toVL, or greater thanVU, will not be returned.VL < VU. IfRANGE='I'or='A', DLARRE computes bounds on the desired part of the spectrum.ILβILisINTEGER. IfRANGE='I', the index of the smallest eigenvalue to be returned.1 <= IL <= IU <= N.IUβIUisINTEGER. IfRANGE='I', the index of the largest eigenvalue to be returned.1 <= IL <= IU <= N.DβDisDOUBLE PRECISIONarray, dimension(N). On entry, theNdiagonal elements of the tridiagonal matrixT. On exit, theNdiagonal elements of the diagonal matricesD_i.EβEisDOUBLE PRECISIONarray, 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.E2βE2isDOUBLE PRECISIONarray, 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 entriesE2( ISPLIT( I ) ),1 <= I <= NSPLIT, have been set to zero.RTOL1βRTOL1isDOUBLE PRECISION.RTOL2βRTOL2isDOUBLE PRECISION. Parameters for bisection. An interval[LEFT,RIGHT]has converged ifRIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) ).SPLTOLβSPLTOLisDOUBLE PRECISION. The threshold for splitting.NSPLITβNSPLITisINTEGER. The number of blocksTsplits into.1 <= NSPLIT <= N.ISPLITβISPLITisINTEGERarray, dimension(N). The splitting points, at whichTbreaks 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.MβMisINTEGER. The total number of eigenvalues (of allL_i D_i L_i^T) found.WβWisDOUBLE PRECISIONarray, dimension(N). The firstMelements contain the eigenvalues. The eigenvalues of each of the blocks,L_i D_i L_i^T, are sorted in ascending order ( DLARRE may use the remainingN-Melements as workspace).WERRβWERRisDOUBLE PRECISIONarray, dimension(N). The error bound on the corresponding eigenvalue inW.WGAPβWGAPisDOUBLE PRECISIONarray, dimension(N). The separation from the right neighbor eigenvalue inW. 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.IBLOCKβIBLOCKisINTEGERarray, dimension(N). The indices of the blocks (submatrices) associated with the corresponding eigenvalues inW;IBLOCK(i)=1if eigenvalueW(i)belongs to the first block from the top,=2ifW(i)belongs to the second block, etc.INDEXWβINDEXWisINTEGERarray, dimension(N). The indices of the eigenvalues within each block (submatrix); for example,INDEXW(i)= 10andIBLOCK(i)=2imply that thei-th eigenvalueW(i)is the 10-th eigenvalue in block 2.GERSβGERSisDOUBLE PRECISIONarray, dimension(2*N). TheNGerschgorin intervals (thei-th Gerschgorin interval is(GERS(2*i-1), GERS(2*i))).PIVMINβPIVMINisDOUBLE PRECISION. The minimum pivot in the Sturm sequence forT.WORKβWORKisDOUBLE PRECISIONarray, dimension(6*N). Workspace.IWORKβIWORKisINTEGERarray, dimension(5*N). Workspace.INFOβINFOisINTEGER= 0: successful exit> 0: A problem occurred in DLARRE.< 0: One of the called subroutines signaled an internal problem. Needs inspection of the corresponding parameterIINFOfor further information.=-1: Problem in DLARRD.= 2: No base representation could be found inMAXTRYiterations. IncreasingMAXTRYand recompilation might be a remedy.=-3: Problem in DLARRB when computing the refined root representation for DLASQ2.=-4: Problem in DLARRB when preforming bisection on the desired part of the spectrum.=-5: Problem in DLASQ2.=-6: Problem in DLASQ2.
π 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. That's the whole point, bestie. β¨
π«Ά 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 dlarre.f.
ποΈ Author
Generated automatically by Doxygen for LAPACK from the source code.
LAPACK Version 3.12.0 Β· SRC/dlarre.f(3) β that's the footer, bestie π
πβ¨
π¦ 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