(S|D|C|Z)HSEQR

Single, double, single complex, and double complex HSEQR.

Description

Computes the eigenvalues of a Hessenberg matrix and optionally the Schur decomposition.

The Schur decomposition of the Hessenberg matrix H is:

H = Z \mult T \mult \herm{Z}

where T is upper triangular and Z is the unitary matrix of Schur vectors.

LAPACK Interface

void shseqr(const char *JOB, const char *COMPZ, const qml_long *N,
    const qml_long *ILO, const qml_long *IHI, float *H,
    const qml_long *LDH, float *WR, float *WI, float *Z,
    const qml_long *LDZ, float *WORK, const qml_long *LWORK,
    qml_long *INFO);

void dhseqr(const char *JOB, const char *COMPZ, const qml_long *N,
    const qml_long *ILO, const qml_long *IHI, double *H,
    const qml_long *LDH, double *WR, double *WI, double *Z,
    const qml_long *LDZ, double *WORK, const qml_long *LWORK,
    qml_long *INFO);

void chseqr(const char *JOB, const char *COMPZ, const qml_long *N,
    const qml_long *ILO, const qml_long *IHI, qml_single_complex *H,
    const qml_long *LDH, qml_single_complex *W, qml_single_complex *Z,
    const qml_long *LDZ, qml_single_complex *WORK, const qml_long *LWORK,
    qml_long *INFO);

void zhseqr(const char *JOB, const char *COMPZ, const qml_long *N,
    const qml_long *ILO, const qml_long *IHI, qml_double_complex *H,
    const qml_long *LDH, qml_double_complex *W, qml_double_complex *Z,
    const qml_long *LDZ, qml_double_complex *WORK, const qml_long *LWORK,
    qml_long *INFO);

Arguments

JOB Compute Schur matrix T (‘S’) or eigenvalues only (‘E’)
COMPZ Compute Schur matrix Z (‘I’), Q*Z (‘V’), or do not compute (‘N’)
N Number of rows and columns of H
ILO Lower bound of already reduced triangular part
IHI Upper bound of already reduced triangular part
H Matrix of size N x N, overwritten on exit
LDH Leading dimension of H
W Array of size N containing eigenvalues on exit
WR Real part of W for real versions
WI Complex part of W for real version
Z Matrix of size N x N
LDZ Leading dimension of Z
WORK Work space of size at least LWORK
LWORK Size of work space (-1 to query)
RWORK Work space of size 2N
INFO 0 on success