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

in
compz

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

in
n

The order of the matrix. n >= 0.

inout
D

Double precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.

inout
E

Double precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.

inout
Z

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

in
ldz

The leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).

out
work

Double precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.

out
info

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

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

in
compz

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

in
n

The order of the matrix. n >= 0.

inout
D

Double precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.

inout
E

Double precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.

inout
Z

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

in
ldz

The leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).

out
work

Double precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.

out
info

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

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

in
compz

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

in
n

The order of the matrix. n >= 0.

inout
D

Single precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.

inout
E

Single precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.

inout
Z

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

in
ldz

The leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).

out
work

Single precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.

out
info

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

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

in
compz

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

in
n

The order of the matrix. n >= 0.

inout
D

Double precision array, dimension (n). On entry, the diagonal elements of the tridiagonal matrix. On exit, if info = 0, the eigenvalues in ascending order.

inout
E

Double precision array, dimension (n-1). On entry, the subdiagonal elements of the tridiagonal matrix. On exit, E has been destroyed.

inout
Z

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

in
ldz

The leading dimension of the array Z. ldz >= 1, and if eigenvectors are desired, then ldz >= max(1,n).

out
work

Double precision array, dimension (max(1,2*n-2)). If compz = ‘N’, then work is not referenced.

out
info

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