larrv#
Functions
-
void slarrv(const INT n, const f32 vl, const f32 vu, f32 *D, f32 *L, const f32 pivmin, const INT *isplit, const INT m, const INT dol, const INT dou, const f32 minrgp, const f32 rtol1, const f32 rtol2, f32 *W, f32 *werr, f32 *wgap, const INT *iblock, const INT *indexw, const f32 *gers, f32 *Z, const INT ldz, INT *isuppz, f32 *work, INT *iwork, INT *info)#
SLARRV computes the eigenvectors of the tridiagonal matrix T = L D L^T given L, D and APPROXIMATIONS to the eigenvalues of L D L^T.
The input eigenvalues should have been computed by SLARRE.
Parameters
innThe order of the matrix. n >= 0.
invlLower bound of the interval that contains the desired eigenvalues. vl < vu.
invuUpper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.
inoutDDouble precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.
inoutLDouble precision array, dimension (n). On entry, the (n-1) subdiagonal elements of the unit bidiagonal matrix L are in elements 0 to n-2. At the end of each block is stored the corresponding shift as given by SLARRE. On exit, L is overwritten.
inpivminThe minimum pivot allowed in the Sturm sequence.
inisplitInteger array, dimension (n). The splitting points (0-based last indices of blocks).
inmThe total number of input eigenvalues. 0 <= m <= n.
indolIf the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.
indou0-based index of the last desired eigenvector. Otherwise dou = m-1.
inminrgpMinimum relative gap parameter.
inrtol1Tolerance for bisection convergence.
inrtol2Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
inoutWDouble precision array, dimension (n). The first m elements contain the approximate eigenvalues for which eigenvectors are to be computed. On exit, W holds the eigenvalues of the UNshifted matrix.
inoutwerrDouble precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.
inoutwgapDouble precision array, dimension (n). The separation from the right neighbor eigenvalue in W.
iniblockInteger array, dimension (n). The 0-based block indices for each eigenvalue.
inindexwInteger array, dimension (n). The 0-based local indices of eigenvalues within each block.
ingersDouble precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).
outZDouble precision array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.
inldzThe leading dimension of Z. ldz >= max(1,n).
outisuppzInteger array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].
outworkDouble precision array, dimension (12*n).
outiworkInteger array, dimension (7*n).
outinfo= 0: successful exit
> 0: a problem occurred in SLARRV.
< 0: one of the called subroutines signaled an internal problem.
= -1: problem in SLARRB when refining a child’s eigenvalues.
= -2: problem in SLARRF when computing the RRR of a child.
= -3: problem in SLARRB when refining a single eigenvalue after the Rayleigh correction was rejected.
= 5: the Rayleigh Quotient Iteration failed to converge to full accuracy in MAXITR steps.
void slarrv(
const INT n,
const f32 vl,
const f32 vu,
f32* D,
f32* L,
const f32 pivmin,
const INT* isplit,
const INT m,
const INT dol,
const INT dou,
const f32 minrgp,
const f32 rtol1,
const f32 rtol2,
f32* W,
f32* werr,
f32* wgap,
const INT* iblock,
const INT* indexw,
const f32* gers,
f32* Z,
const INT ldz,
INT* isuppz,
f32* work,
INT* iwork,
INT* info
);
Functions
-
void dlarrv(const INT n, const f64 vl, const f64 vu, f64 *D, f64 *L, const f64 pivmin, const INT *isplit, const INT m, const INT dol, const INT dou, const f64 minrgp, const f64 rtol1, const f64 rtol2, f64 *W, f64 *werr, f64 *wgap, const INT *iblock, const INT *indexw, const f64 *gers, f64 *Z, const INT ldz, INT *isuppz, f64 *work, INT *iwork, INT *info)#
DLARRV computes the eigenvectors of the tridiagonal matrix T = L D L^T given L, D and APPROXIMATIONS to the eigenvalues of L D L^T.
The input eigenvalues should have been computed by DLARRE.
Parameters
innThe order of the matrix. n >= 0.
invlLower bound of the interval that contains the desired eigenvalues. vl < vu.
invuUpper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.
inoutDDouble precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.
inoutLDouble precision array, dimension (n). On entry, the (n-1) subdiagonal elements of the unit bidiagonal matrix L are in elements 0 to n-2. At the end of each block is stored the corresponding shift as given by DLARRE. On exit, L is overwritten.
inpivminThe minimum pivot allowed in the Sturm sequence.
inisplitInteger array, dimension (n). The splitting points (0-based last indices of blocks).
inmThe total number of input eigenvalues. 0 <= m <= n.
indolIf the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.
indou0-based index of the last desired eigenvector. Otherwise dou = m-1.
inminrgpMinimum relative gap parameter.
inrtol1Tolerance for bisection convergence.
inrtol2Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
inoutWDouble precision array, dimension (n). The first m elements contain the approximate eigenvalues for which eigenvectors are to be computed. On exit, W holds the eigenvalues of the UNshifted matrix.
inoutwerrDouble precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.
inoutwgapDouble precision array, dimension (n). The separation from the right neighbor eigenvalue in W.
iniblockInteger array, dimension (n). The 0-based block indices for each eigenvalue.
inindexwInteger array, dimension (n). The 0-based local indices of eigenvalues within each block.
ingersDouble precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).
outZDouble precision array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.
inldzThe leading dimension of Z. ldz >= max(1,n).
outisuppzInteger array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].
outworkDouble precision array, dimension (12*n).
outiworkInteger array, dimension (7*n).
outinfo= 0: successful exit
> 0: a problem occurred in DLARRV.
< 0: one of the called subroutines signaled an internal problem.
= -1: problem in DLARRB when refining a child’s eigenvalues.
= -2: problem in DLARRF when computing the RRR of a child.
= -3: problem in DLARRB when refining a single eigenvalue after the Rayleigh correction was rejected.
= 5: the Rayleigh Quotient Iteration failed to converge to full accuracy in MAXITR steps.
void dlarrv(
const INT n,
const f64 vl,
const f64 vu,
f64* D,
f64* L,
const f64 pivmin,
const INT* isplit,
const INT m,
const INT dol,
const INT dou,
const f64 minrgp,
const f64 rtol1,
const f64 rtol2,
f64* W,
f64* werr,
f64* wgap,
const INT* iblock,
const INT* indexw,
const f64* gers,
f64* Z,
const INT ldz,
INT* isuppz,
f64* work,
INT* iwork,
INT* info
);
Functions
-
void clarrv(const INT n, const f32 vl, const f32 vu, f32 *D, f32 *L, const f32 pivmin, const INT *isplit, const INT m, const INT dol, const INT dou, const f32 minrgp, const f32 rtol1, const f32 rtol2, f32 *W, f32 *werr, f32 *wgap, const INT *iblock, const INT *indexw, const f32 *gers, c64 *Z, const INT ldz, INT *isuppz, f32 *work, INT *iwork, INT *info)#
CLARRV computes the eigenvectors of the tridiagonal matrix T = L D L^T given L, D and APPROXIMATIONS to the eigenvalues of L D L^T.
The input eigenvalues should have been computed by SLARRE.
Parameters
innThe order of the matrix. n >= 0.
invlLower bound of the interval that contains the desired eigenvalues. vl < vu.
invuUpper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.
inoutDSingle precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.
inoutLSingle precision array, dimension (n). On entry, the (n-1) subdiagonal elements of the unit bidiagonal matrix L are in elements 0 to n-2. At the end of each block is stored the corresponding shift as given by SLARRE. On exit, L is overwritten.
inpivminThe minimum pivot allowed in the Sturm sequence.
inisplitInteger array, dimension (n). The splitting points (0-based last indices of blocks).
inmThe total number of input eigenvalues. 0 <= m <= n.
indolIf the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.
indou0-based index of the last desired eigenvector. Otherwise dou = m-1.
inminrgpMinimum relative gap parameter.
inrtol1Tolerance for bisection convergence.
inrtol2Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
inoutWSingle precision array, dimension (n). The first m elements contain the approximate eigenvalues for which eigenvectors are to be computed. On exit, W holds the eigenvalues of the UNshifted matrix.
inoutwerrSingle precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.
inoutwgapSingle precision array, dimension (n). The separation from the right neighbor eigenvalue in W.
iniblockInteger array, dimension (n). The 0-based block indices for each eigenvalue.
inindexwInteger array, dimension (n). The 0-based local indices of eigenvalues within each block.
ingersSingle precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).
outZComplex f32 array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.
inldzThe leading dimension of Z. ldz >= max(1,n).
outisuppzInteger array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].
outworkSingle precision array, dimension (12*n).
outiworkInteger array, dimension (7*n).
outinfo= 0: successful exit
> 0: a problem occurred in CLARRV.
< 0: one of the called subroutines signaled an internal problem.
= -1: problem in SLARRB when refining a child’s eigenvalues.
= -2: problem in SLARRF when computing the RRR of a child.
= -3: problem in SLARRB when refining a single eigenvalue after the Rayleigh correction was rejected.
= 5: the Rayleigh Quotient Iteration failed to converge to full accuracy in MAXITR steps.
void clarrv(
const INT n,
const f32 vl,
const f32 vu,
f32* D,
f32* L,
const f32 pivmin,
const INT* isplit,
const INT m,
const INT dol,
const INT dou,
const f32 minrgp,
const f32 rtol1,
const f32 rtol2,
f32* W,
f32* werr,
f32* wgap,
const INT* iblock,
const INT* indexw,
const f32* gers,
c64* Z,
const INT ldz,
INT* isuppz,
f32* work,
INT* iwork,
INT* info
);
Functions
-
void zlarrv(const INT n, const f64 vl, const f64 vu, f64 *D, f64 *L, const f64 pivmin, const INT *isplit, const INT m, const INT dol, const INT dou, const f64 minrgp, const f64 rtol1, const f64 rtol2, f64 *W, f64 *werr, f64 *wgap, const INT *iblock, const INT *indexw, const f64 *gers, c128 *Z, const INT ldz, INT *isuppz, f64 *work, INT *iwork, INT *info)#
ZLARRV computes the eigenvectors of the tridiagonal matrix T = L D L^T given L, D and APPROXIMATIONS to the eigenvalues of L D L^T.
The input eigenvalues should have been computed by DLARRE.
Parameters
innThe order of the matrix. n >= 0.
invlLower bound of the interval that contains the desired eigenvalues. vl < vu.
invuUpper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.
inoutDDouble precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.
inoutLDouble precision array, dimension (n). On entry, the (n-1) subdiagonal elements of the unit bidiagonal matrix L are in elements 0 to n-2. At the end of each block is stored the corresponding shift as given by DLARRE. On exit, L is overwritten.
inpivminThe minimum pivot allowed in the Sturm sequence.
inisplitInteger array, dimension (n). The splitting points (0-based last indices of blocks).
inmThe total number of input eigenvalues. 0 <= m <= n.
indolIf the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.
indou0-based index of the last desired eigenvector. Otherwise dou = m-1.
inminrgpMinimum relative gap parameter.
inrtol1Tolerance for bisection convergence.
inrtol2Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )
inoutWDouble precision array, dimension (n). The first m elements contain the approximate eigenvalues for which eigenvectors are to be computed. On exit, W holds the eigenvalues of the UNshifted matrix.
inoutwerrDouble precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.
inoutwgapDouble precision array, dimension (n). The separation from the right neighbor eigenvalue in W.
iniblockInteger array, dimension (n). The 0-based block indices for each eigenvalue.
inindexwInteger array, dimension (n). The 0-based local indices of eigenvalues within each block.
ingersDouble precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).
outZComplex f64 array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.
inldzThe leading dimension of Z. ldz >= max(1,n).
outisuppzInteger array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].
outworkDouble precision array, dimension (12*n).
outiworkInteger array, dimension (7*n).
outinfo= 0: successful exit
> 0: a problem occurred in ZLARRV.
< 0: one of the called subroutines signaled an internal problem.
= -1: problem in DLARRB when refining a child’s eigenvalues.
= -2: problem in DLARRF when computing the RRR of a child.
= -3: problem in DLARRB when refining a single eigenvalue after the Rayleigh correction was rejected.
= 5: the Rayleigh Quotient Iteration failed to converge to full accuracy in MAXITR steps.
void zlarrv(
const INT n,
const f64 vl,
const f64 vu,
f64* D,
f64* L,
const f64 pivmin,
const INT* isplit,
const INT m,
const INT dol,
const INT dou,
const f64 minrgp,
const f64 rtol1,
const f64 rtol2,
f64* W,
f64* werr,
f64* wgap,
const INT* iblock,
const INT* indexw,
const f64* gers,
c128* Z,
const INT ldz,
INT* isuppz,
f64* work,
INT* iwork,
INT* info
);