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
);
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

in
n

The order of the matrix. n >= 0.

in
vl

Lower bound of the interval that contains the desired eigenvalues. vl < vu.

in
vu

Upper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.

inout
D

Double precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.

inout
L

Double 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.

in
pivmin

The minimum pivot allowed in the Sturm sequence.

in
isplit

Integer array, dimension (n). The splitting points (0-based last indices of blocks).

in
m

The total number of input eigenvalues. 0 <= m <= n.

in
dol

If the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.

in
dou

0-based index of the last desired eigenvector. Otherwise dou = m-1.

in
minrgp

Minimum relative gap parameter.

in
rtol1

Tolerance for bisection convergence.

in
rtol2

Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )

inout
W

Double 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.

inout
werr

Double precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.

inout
wgap

Double precision array, dimension (n). The separation from the right neighbor eigenvalue in W.

in
iblock

Integer array, dimension (n). The 0-based block indices for each eigenvalue.

in
indexw

Integer array, dimension (n). The 0-based local indices of eigenvalues within each block.

in
gers

Double precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).

out
Z

Double precision array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.

in
ldz

The leading dimension of Z. ldz >= max(1,n).

out
isuppz

Integer array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].

out
work

Double precision array, dimension (12*n).

out
iwork

Integer array, dimension (7*n).

out
info

  • = 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.

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
);
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

in
n

The order of the matrix. n >= 0.

in
vl

Lower bound of the interval that contains the desired eigenvalues. vl < vu.

in
vu

Upper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.

inout
D

Double precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.

inout
L

Double 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.

in
pivmin

The minimum pivot allowed in the Sturm sequence.

in
isplit

Integer array, dimension (n). The splitting points (0-based last indices of blocks).

in
m

The total number of input eigenvalues. 0 <= m <= n.

in
dol

If the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.

in
dou

0-based index of the last desired eigenvector. Otherwise dou = m-1.

in
minrgp

Minimum relative gap parameter.

in
rtol1

Tolerance for bisection convergence.

in
rtol2

Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )

inout
W

Double 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.

inout
werr

Double precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.

inout
wgap

Double precision array, dimension (n). The separation from the right neighbor eigenvalue in W.

in
iblock

Integer array, dimension (n). The 0-based block indices for each eigenvalue.

in
indexw

Integer array, dimension (n). The 0-based local indices of eigenvalues within each block.

in
gers

Double precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).

out
Z

Double precision array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.

in
ldz

The leading dimension of Z. ldz >= max(1,n).

out
isuppz

Integer array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].

out
work

Double precision array, dimension (12*n).

out
iwork

Integer array, dimension (7*n).

out
info

  • = 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.

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
);
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

in
n

The order of the matrix. n >= 0.

in
vl

Lower bound of the interval that contains the desired eigenvalues. vl < vu.

in
vu

Upper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.

inout
D

Single precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.

inout
L

Single 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.

in
pivmin

The minimum pivot allowed in the Sturm sequence.

in
isplit

Integer array, dimension (n). The splitting points (0-based last indices of blocks).

in
m

The total number of input eigenvalues. 0 <= m <= n.

in
dol

If the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.

in
dou

0-based index of the last desired eigenvector. Otherwise dou = m-1.

in
minrgp

Minimum relative gap parameter.

in
rtol1

Tolerance for bisection convergence.

in
rtol2

Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )

inout
W

Single 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.

inout
werr

Single precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.

inout
wgap

Single precision array, dimension (n). The separation from the right neighbor eigenvalue in W.

in
iblock

Integer array, dimension (n). The 0-based block indices for each eigenvalue.

in
indexw

Integer array, dimension (n). The 0-based local indices of eigenvalues within each block.

in
gers

Single precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).

out
Z

Complex f32 array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.

in
ldz

The leading dimension of Z. ldz >= max(1,n).

out
isuppz

Integer array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].

out
work

Single precision array, dimension (12*n).

out
iwork

Integer array, dimension (7*n).

out
info

  • = 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.

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
);
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

in
n

The order of the matrix. n >= 0.

in
vl

Lower bound of the interval that contains the desired eigenvalues. vl < vu.

in
vu

Upper bound of the interval that contains the desired eigenvalues. vl < vu. Currently not used by this implementation.

inout
D

Double precision array, dimension (n). On entry, the n diagonal elements of the diagonal matrix D. On exit, D may be overwritten.

inout
L

Double 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.

in
pivmin

The minimum pivot allowed in the Sturm sequence.

in
isplit

Integer array, dimension (n). The splitting points (0-based last indices of blocks).

in
m

The total number of input eigenvalues. 0 <= m <= n.

in
dol

If the user wants to compute only selected eigenvectors, dol is the 0-based index of the first desired eigenvector. Otherwise dol = 0.

in
dou

0-based index of the last desired eigenvector. Otherwise dou = m-1.

in
minrgp

Minimum relative gap parameter.

in
rtol1

Tolerance for bisection convergence.

in
rtol2

Tolerance for bisection convergence. An interval [LEFT,RIGHT] has converged if RIGHT-LEFT < MAX( RTOL1*GAP, RTOL2*MAX(|LEFT|,|RIGHT|) )

inout
W

Double 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.

inout
werr

Double precision array, dimension (n). The first m elements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue in W.

inout
wgap

Double precision array, dimension (n). The separation from the right neighbor eigenvalue in W.

in
iblock

Integer array, dimension (n). The 0-based block indices for each eigenvalue.

in
indexw

Integer array, dimension (n). The 0-based local indices of eigenvalues within each block.

in
gers

Double precision array, dimension (2*n). The n Gerschgorin intervals (gers[2*i], gers[2*i+1]).

out
Z

Complex f64 array, dimension (ldz, max(1,m)). The orthonormal eigenvectors of the matrix T.

in
ldz

The leading dimension of Z. ldz >= max(1,n).

out
isuppz

Integer array, dimension (2*max(1,m)). The support of eigenvectors in Z (0-based indices). isuppz[2*i] through isuppz[2*i+1].

out
work

Double precision array, dimension (12*n).

out
iwork

Integer array, dimension (7*n).

out
info

  • = 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.