steqr#
Functions
-
void ssteqr(const char *compz, const INT n, f32 *restrict D, f32 *restrict E, f32 *restrict Z, const INT ldz, f32 *restrict work, INT *info)#
SSTEQR computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method.
The eigenvectors of a full or band symmetric matrix can also be found if SSYTRD or SSPTRD or SSBTRD has been used to reduce this matrix to tridiagonal form.
Parameters
incompz= ‘N’: Compute eigenvalues only. = ‘V’: Compute eigenvalues and eigenvectors of the original symmetric matrix. On entry, Z must contain the orthogonal matrix used to reduce the original matrix to tridiagonal form. = ‘I’: Compute eigenvalues and eigenvectors of the tridiagonal matrix. Z is initialized to the identity matrix.
innThe order of the matrix. n >= 0.
inoutDDouble precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.
inoutEDouble precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.
inoutZDouble precision array, dimension (ldz, n). On entry, if compz = ‘V’, then Z contains the orthogonal matrix used in the reduction to tridiagonal form. On exit, if info = 0, then if compz = ‘V’, Z contains the orthonormal eigenvectors of the original symmetric matrix, and if compz = ‘I’, Z contains the orthonormal eigenvectors of the symmetric tridiagonal matrix. If compz = ‘N’, then Z is not referenced.
inldzThe leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).
outworkDouble precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: the algorithm has failed to find all the eigenvalues in a total of 30*N iterations; if info = i, then i elements of E have not converged to zero.
void ssteqr(
const char* compz,
const INT n,
f32* restrict D,
f32* restrict E,
f32* restrict Z,
const INT ldz,
f32* restrict work,
INT* info
);
Functions
-
void dsteqr(const char *compz, const INT n, f64 *restrict D, f64 *restrict E, f64 *restrict Z, const INT ldz, f64 *restrict work, INT *info)#
DSTEQR computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method.
The eigenvectors of a full or band symmetric matrix can also be found if DSYTRD or DSPTRD or DSBTRD has been used to reduce this matrix to tridiagonal form.
Parameters
incompz= ‘N’: Compute eigenvalues only. = ‘V’: Compute eigenvalues and eigenvectors of the original symmetric matrix. On entry, Z must contain the orthogonal matrix used to reduce the original matrix to tridiagonal form. = ‘I’: Compute eigenvalues and eigenvectors of the tridiagonal matrix. Z is initialized to the identity matrix.
innThe order of the matrix. n >= 0.
inoutDDouble precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.
inoutEDouble precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.
inoutZDouble precision array, dimension (ldz, n). On entry, if compz = ‘V’, then Z contains the orthogonal matrix used in the reduction to tridiagonal form. On exit, if info = 0, then if compz = ‘V’, Z contains the orthonormal eigenvectors of the original symmetric matrix, and if compz = ‘I’, Z contains the orthonormal eigenvectors of the symmetric tridiagonal matrix. If compz = ‘N’, then Z is not referenced.
inldzThe leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).
outworkDouble precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: the algorithm has failed to find all the eigenvalues in a total of 30*N iterations; if info = i, then i elements of E have not converged to zero.
void dsteqr(
const char* compz,
const INT n,
f64* restrict D,
f64* restrict E,
f64* restrict Z,
const INT ldz,
f64* restrict work,
INT* info
);
Functions
-
void csteqr(const char *compz, const INT n, f32 *restrict D, f32 *restrict E, c64 *restrict Z, const INT ldz, f32 *restrict work, INT *info)#
CSTEQR computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method.
The eigenvectors of a full or band complex Hermitian matrix can also be found if CHETRD or CHPTRD or CHBTRD has been used to reduce this matrix to tridiagonal form.
Parameters
incompz= ‘N’: Compute eigenvalues only. = ‘V’: Compute eigenvalues and eigenvectors of the original Hermitian matrix. On entry, Z must contain the unitary matrix used to reduce the original matrix to tridiagonal form. = ‘I’: Compute eigenvalues and eigenvectors of the tridiagonal matrix. Z is initialized to the identity matrix.
innThe order of the matrix. n >= 0.
inoutDSingle precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.
inoutESingle precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.
inoutZSingle complex array, dimension (ldz, n). On entry, if compz = ‘V’, then Z contains the unitary matrix used in the reduction to tridiagonal form. On exit, if info = 0, then if compz = ‘V’, Z contains the orthonormal eigenvectors of the original Hermitian matrix, and if compz = ‘I’, Z contains the orthonormal eigenvectors of the symmetric tridiagonal matrix. If compz = ‘N’, then Z is not referenced.
inldzThe leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).
outworkSingle precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: the algorithm has failed to find all the eigenvalues in a total of 30*N iterations; if info = i, then i elements of E have not converged to zero.
void csteqr(
const char* compz,
const INT n,
f32* restrict D,
f32* restrict E,
c64* restrict Z,
const INT ldz,
f32* restrict work,
INT* info
);
Functions
-
void zsteqr(const char *compz, const INT n, f64 *restrict D, f64 *restrict E, c128 *restrict Z, const INT ldz, f64 *restrict work, INT *info)#
ZSTEQR computes all eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal matrix using the implicit QL or QR method.
The eigenvectors of a full or band complex Hermitian matrix can also be found if ZHETRD or ZHPTRD or ZHBTRD has been used to reduce this matrix to tridiagonal form.
Parameters
incompz= ‘N’: Compute eigenvalues only. = ‘V’: Compute eigenvalues and eigenvectors of the original Hermitian matrix. On entry, Z must contain the unitary matrix used to reduce the original matrix to tridiagonal form. = ‘I’: Compute eigenvalues and eigenvectors of the tridiagonal matrix. Z is initialized to the identity matrix.
innThe order of the matrix. n >= 0.
inoutDDouble precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.
inoutEDouble precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.
inoutZDouble complex array, dimension (ldz, n). On entry, if compz = ‘V’, then Z contains the unitary matrix used in the reduction to tridiagonal form. On exit, if info = 0, then if compz = ‘V’, Z contains the orthonormal eigenvectors of the original Hermitian matrix, and if compz = ‘I’, Z contains the orthonormal eigenvectors of the symmetric tridiagonal matrix. If compz = ‘N’, then Z is not referenced.
inldzThe leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).
outworkDouble precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: the algorithm has failed to find all the eigenvalues in a total of 30*N iterations; if info = i, then i elements of E have not converged to zero.
void zsteqr(
const char* compz,
const INT n,
f64* restrict D,
f64* restrict E,
c128* restrict Z,
const INT ldz,
f64* restrict work,
INT* info
);