stevx#
Functions
-
void sstevx(const char *jobz, const char *range, const INT n, f32 *restrict D, f32 *restrict E, const f32 vl, const f32 vu, const INT il, const INT iu, const f32 abstol, INT *m, f32 *restrict W, f32 *restrict Z, const INT ldz, f32 *restrict work, INT *restrict iwork, INT *restrict ifail, INT *info)#
SSTEVX computes selected eigenvalues and, optionally, eigenvectors of a real symmetric tridiagonal matrix A.
Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues.
Parameters
injobz= ‘N’: Compute eigenvalues only; = ‘V’: Compute eigenvalues and eigenvectors.
inrange= ‘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 will be found.
innThe order of the matrix. n >= 0.
inoutDDouble precision array, dimension (n). On entry, the n diagonal elements of the tridiagonal matrix A. On exit, D may be multiplied by a constant factor chosen to avoid over/underflow.
inoutEDouble precision array, dimension (max(1,n-1)). On entry, the (n-1) subdiagonal elements. On exit, E may be multiplied by a constant factor.
invlIf range=’V’, the lower bound of the interval.
invuIf range=’V’, the upper bound of the interval.
inilIf range=’I’, the index of the smallest eigenvalue to be returned (0-based).
iniuIf range=’I’, the index of the largest eigenvalue to be returned (0-based).
inabstolThe absolute error tolerance for the eigenvalues.
outmThe total number of eigenvalues found.
outWDouble precision array, dimension (n). The first m elements contain the selected eigenvalues in ascending order.
outZDouble precision array, dimension (ldz, max(1,m)). If jobz=’V’, the first m columns contain the orthonormal eigenvectors.
inldzThe leading dimension of Z. ldz >= 1, and if jobz=’V’, ldz >= max(1,n).
outworkDouble precision array, dimension (5*n).
outiworkInteger array, dimension (5*n).
outifailInteger array, dimension (n). If jobz=’V’, on normal exit all elements are zero. If info > 0, contains indices of eigenvectors that failed to converge.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, then i eigenvectors failed to converge.
void sstevx(
const char* jobz,
const char* range,
const INT n,
f32* restrict D,
f32* restrict E,
const f32 vl,
const f32 vu,
const INT il,
const INT iu,
const f32 abstol,
INT* m,
f32* restrict W,
f32* restrict Z,
const INT ldz,
f32* restrict work,
INT* restrict iwork,
INT* restrict ifail,
INT* info
);
Functions
-
void dstevx(const char *jobz, const char *range, const INT n, f64 *restrict D, f64 *restrict E, const f64 vl, const f64 vu, const INT il, const INT iu, const f64 abstol, INT *m, f64 *restrict W, f64 *restrict Z, const INT ldz, f64 *restrict work, INT *restrict iwork, INT *restrict ifail, INT *info)#
DSTEVX computes selected eigenvalues and, optionally, eigenvectors of a real symmetric tridiagonal matrix A.
Eigenvalues and eigenvectors can be selected by specifying either a range of values or a range of indices for the desired eigenvalues.
Parameters
injobz= ‘N’: Compute eigenvalues only; = ‘V’: Compute eigenvalues and eigenvectors.
inrange= ‘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 will be found.
innThe order of the matrix. n >= 0.
inoutDDouble precision array, dimension (n). On entry, the n diagonal elements of the tridiagonal matrix A. On exit, D may be multiplied by a constant factor chosen to avoid over/underflow.
inoutEDouble precision array, dimension (max(1,n-1)). On entry, the (n-1) subdiagonal elements. On exit, E may be multiplied by a constant factor.
invlIf range=’V’, the lower bound of the interval.
invuIf range=’V’, the upper bound of the interval.
inilIf range=’I’, the index of the smallest eigenvalue to be returned (0-based).
iniuIf range=’I’, the index of the largest eigenvalue to be returned (0-based).
inabstolThe absolute error tolerance for the eigenvalues.
outmThe total number of eigenvalues found.
outWDouble precision array, dimension (n). The first m elements contain the selected eigenvalues in ascending order.
outZDouble precision array, dimension (ldz, max(1,m)). If jobz=’V’, the first m columns contain the orthonormal eigenvectors.
inldzThe leading dimension of Z. ldz >= 1, and if jobz=’V’, ldz >= max(1,n).
outworkDouble precision array, dimension (5*n).
outiworkInteger array, dimension (5*n).
outifailInteger array, dimension (n). If jobz=’V’, on normal exit all elements are zero. If info > 0, contains indices of eigenvectors that failed to converge.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, then i eigenvectors failed to converge.
void dstevx(
const char* jobz,
const char* range,
const INT n,
f64* restrict D,
f64* restrict E,
const f64 vl,
const f64 vu,
const INT il,
const INT iu,
const f64 abstol,
INT* m,
f64* restrict W,
f64* restrict Z,
const INT ldz,
f64* restrict work,
INT* restrict iwork,
INT* restrict ifail,
INT* info
);