hseqr#

Functions

void shseqr(
    const char* job,
    const char* compz,
    const INT   n,
    const INT   ilo,
    const INT   ihi,
          f32*  H,
    const INT   ldh,
          f32*  wr,
          f32*  wi,
          f32*  Z,
    const INT   ldz,
          f32*  work,
    const INT   lwork,
          INT*  info
);
void shseqr(const char *job, const char *compz, const INT n, const INT ilo, const INT ihi, f32 *H, const INT ldh, f32 *wr, f32 *wi, f32 *Z, const INT ldz, f32 *work, const INT lwork, INT *info)#

SHSEQR computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z^T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors.

Optionally Z may be postmultiplied into an input orthogonal matrix Q so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the orthogonal matrix Q: A = Q*H*Q^T = (QZ)*T*(QZ)^T.

Parameters

in
job

‘E’ for eigenvalues only; ‘S’ for Schur form T.

in
compz

‘N’ no Schur vectors; ‘I’ initialize Z to identity; ‘V’ Z contains input orthogonal matrix Q.

in
n

The order of the matrix H. n >= 0.

in
ilo

First index of isolated block (0-based). 0 <= ilo <= ihi <= n-1, if n > 0; ilo=0 and ihi=-1, if n=0.

in
ihi

Last index of isolated block (0-based). It is assumed that H is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1.

inout
H

Double precision array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info = 0 and job = ‘S’, then H contains the upper quasi-triangular matrix T (the Schur form).

in
ldh

Leading dimension of H. ldh >= max(1, n).

out
wr

Double precision array, dimension (n). Real parts of the computed eigenvalues.

out
wi

Double precision array, dimension (n). Imaginary parts of the computed eigenvalues.

inout
Z

Double precision array, dimension (ldz, n). If compz = ‘N’, Z is not referenced. If compz = ‘I’, Z is initialized to identity and returns the orthogonal matrix of Schur vectors. If compz = ‘V’, Z contains an orthogonal matrix Q on entry, and returns Q*Z.

in
ldz

Leading dimension of Z. ldz >= 1; if compz = ‘I’ or ‘V’, ldz >= max(1, n).

out
work

Double precision array, dimension (lwork).

in
lwork

Dimension of work array. lwork >= max(1, n). If lwork = -1, workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: if info = i, SHSEQR failed to compute all eigenvalues. Elements 0:ilo-1 and i+1:n-1 of WR and WI contain those eigenvalues which have been successfully computed.

Functions

void dhseqr(
    const char* job,
    const char* compz,
    const INT   n,
    const INT   ilo,
    const INT   ihi,
          f64*  H,
    const INT   ldh,
          f64*  wr,
          f64*  wi,
          f64*  Z,
    const INT   ldz,
          f64*  work,
    const INT   lwork,
          INT*  info
);
void dhseqr(const char *job, const char *compz, const INT n, const INT ilo, const INT ihi, f64 *H, const INT ldh, f64 *wr, f64 *wi, f64 *Z, const INT ldz, f64 *work, const INT lwork, INT *info)#

DHSEQR computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z^T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors.

Optionally Z may be postmultiplied into an input orthogonal matrix Q so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the orthogonal matrix Q: A = Q*H*Q^T = (QZ)*T*(QZ)^T.

Parameters

in
job

‘E’ for eigenvalues only; ‘S’ for Schur form T.

in
compz

‘N’ no Schur vectors; ‘I’ initialize Z to identity; ‘V’ Z contains input orthogonal matrix Q.

in
n

The order of the matrix H. n >= 0.

in
ilo

First index of isolated block (0-based). 0 <= ilo <= ihi <= n-1, if n > 0; ilo=0 and ihi=-1, if n=0.

in
ihi

Last index of isolated block (0-based). It is assumed that H is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1.

inout
H

Double precision array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info = 0 and job = ‘S’, then H contains the upper quasi-triangular matrix T (the Schur form).

in
ldh

Leading dimension of H. ldh >= max(1, n).

out
wr

Double precision array, dimension (n). Real parts of the computed eigenvalues.

out
wi

Double precision array, dimension (n). Imaginary parts of the computed eigenvalues.

inout
Z

Double precision array, dimension (ldz, n). If compz = ‘N’, Z is not referenced. If compz = ‘I’, Z is initialized to identity and returns the orthogonal matrix of Schur vectors. If compz = ‘V’, Z contains an orthogonal matrix Q on entry, and returns Q*Z.

in
ldz

Leading dimension of Z. ldz >= 1; if compz = ‘I’ or ‘V’, ldz >= max(1, n).

out
work

Double precision array, dimension (lwork).

in
lwork

Dimension of work array. lwork >= max(1, n). If lwork = -1, workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: if info = i, DHSEQR failed to compute all eigenvalues. Elements 0:ilo-1 and i+1:n-1 of WR and WI contain those eigenvalues which have been successfully computed.

Functions

void chseqr(
    const char* job,
    const char* compz,
    const INT   n,
    const INT   ilo,
    const INT   ihi,
          c64*  H,
    const INT   ldh,
          c64*  W,
          c64*  Z,
    const INT   ldz,
          c64*  work,
    const INT   lwork,
          INT*  info
);
void chseqr(const char *job, const char *compz, const INT n, const INT ilo, const INT ihi, c64 *H, const INT ldh, c64 *W, c64 *Z, const INT ldz, c64 *work, const INT lwork, INT *info)#

CHSEQR computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z^H, where T is an upper triangular matrix (the Schur form), and Z is the unitary matrix of Schur vectors.

Optionally Z may be postmultiplied into an input unitary matrix Q so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the unitary matrix Q: A = Q*H*Q^H = (QZ)*T*(QZ)^H.

Parameters

in
job

‘E’ for eigenvalues only; ‘S’ for Schur form T.

in
compz

‘N’ no Schur vectors; ‘I’ initialize Z to identity; ‘V’ Z contains input unitary matrix Q.

in
n

The order of the matrix H. n >= 0.

in
ilo

First index of isolated block (0-based).

in
ihi

Last index of isolated block (0-based).

inout
H

Complex array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info = 0 and job = ‘S’, then H contains the upper triangular matrix T (the Schur form).

in
ldh

Leading dimension of H. ldh >= max(1, n).

out
W

Complex array, dimension (n). The computed eigenvalues.

inout
Z

Complex array, dimension (ldz, n).

in
ldz

Leading dimension of Z. ldz >= 1; if compz = ‘I’ or ‘V’, ldz >= max(1, n).

out
work

Complex array, dimension (lwork).

in
lwork

Dimension of work array. lwork >= max(1, n). If lwork = -1, workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: if info = i, CHSEQR failed to compute all eigenvalues.

Functions

void zhseqr(
    const char* job,
    const char* compz,
    const INT   n,
    const INT   ilo,
    const INT   ihi,
          c128* H,
    const INT   ldh,
          c128* W,
          c128* Z,
    const INT   ldz,
          c128* work,
    const INT   lwork,
          INT*  info
);
void zhseqr(const char *job, const char *compz, const INT n, const INT ilo, const INT ihi, c128 *H, const INT ldh, c128 *W, c128 *Z, const INT ldz, c128 *work, const INT lwork, INT *info)#

ZHSEQR computes the eigenvalues of a Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z^H, where T is an upper triangular matrix (the Schur form), and Z is the unitary matrix of Schur vectors.

Optionally Z may be postmultiplied into an input unitary matrix Q so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the unitary matrix Q: A = Q*H*Q^H = (QZ)*T*(QZ)^H.

Parameters

in
job

‘E’ for eigenvalues only; ‘S’ for Schur form T.

in
compz

‘N’ no Schur vectors; ‘I’ initialize Z to identity; ‘V’ Z contains input unitary matrix Q.

in
n

The order of the matrix H. n >= 0.

in
ilo

First index of isolated block (0-based).

in
ihi

Last index of isolated block (0-based).

inout
H

Complex array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info = 0 and job = ‘S’, then H contains the upper triangular matrix T (the Schur form).

in
ldh

Leading dimension of H. ldh >= max(1, n).

out
W

Complex array, dimension (n). The computed eigenvalues.

inout
Z

Complex array, dimension (ldz, n).

in
ldz

Leading dimension of Z. ldz >= 1; if compz = ‘I’ or ‘V’, ldz >= max(1, n).

out
work

Complex array, dimension (lwork).

in
lwork

Dimension of work array. lwork >= max(1, n). If lwork = -1, workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

  • > 0: if info = i, ZHSEQR failed to compute all eigenvalues.