lahqr#

Functions

void slahqr(
    const INT  wantt,
    const INT  wantz,
    const INT  n,
    const INT  ilo,
    const INT  ihi,
          f32* H,
    const INT  ldh,
          f32* wr,
          f32* wi,
    const INT  iloz,
    const INT  ihiz,
          f32* Z,
    const INT  ldz,
          INT* info
);
void slahqr(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, f32 *H, const INT ldh, f32 *wr, f32 *wi, const INT iloz, const INT ihiz, f32 *Z, const INT ldz, INT *info)#

SLAHQR is an auxiliary routine called by SHSEQR to update the eigenvalues and Schur decomposition already computed by SHSEQR, by dealing with the Hessenberg submatrix in rows and columns ilo to ihi.

This is a modified version that is (1) more robust against overflow and underflow and (2) adopts the more conservative Ahues & Tisseur stopping criterion (LAWN 122, 1997).

Parameters

in
wantt

If nonzero, the full Schur form T is required; if zero, only eigenvalues are required.

in
wantz

If nonzero, the matrix of Schur vectors Z is required; if zero, Schur vectors are not required.

in
n

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

in
ilo

First row/column of the active submatrix (0-based).

in
ihi

Last row/column of the active submatrix (0-based). It is assumed that H is already upper quasi-triangular in rows and columns 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 wantt is nonzero, H is upper quasi-triangular in rows and columns ilo:ihi.

in
ldh

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

out
wr

Double precision array, dimension (n). Real parts of computed eigenvalues ilo to ihi.

out
wi

Double precision array, dimension (n). Imaginary parts of computed eigenvalues ilo to ihi.

in
iloz

First row of Z to which transformations must be applied.

in
ihiz

Last row of Z to which transformations must be applied.

inout
Z

Double precision array, dimension (ldz, n). If wantz is nonzero, on entry Z must contain the current matrix Z of transformations, and on exit Z has been updated; transformations applied only to Z(iloz:ihiz, ilo:ihi).

in
ldz

Leading dimension of Z. ldz >= max(1, n).

out
info

  • = 0: successful exit

  • > 0: If info = i (1-based), SLAHQR failed to compute all eigenvalues; elements i:ihi of wr and wi contain those eigenvalues which have been successfully computed.

Functions

void dlahqr(
    const INT  wantt,
    const INT  wantz,
    const INT  n,
    const INT  ilo,
    const INT  ihi,
          f64* H,
    const INT  ldh,
          f64* wr,
          f64* wi,
    const INT  iloz,
    const INT  ihiz,
          f64* Z,
    const INT  ldz,
          INT* info
);
void dlahqr(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, f64 *H, const INT ldh, f64 *wr, f64 *wi, const INT iloz, const INT ihiz, f64 *Z, const INT ldz, INT *info)#

DLAHQR is an auxiliary routine called by DHSEQR to update the eigenvalues and Schur decomposition already computed by DHSEQR, by dealing with the Hessenberg submatrix in rows and columns ilo to ihi.

This is a modified version that is (1) more robust against overflow and underflow and (2) adopts the more conservative Ahues & Tisseur stopping criterion (LAWN 122, 1997).

Parameters

in
wantt

If nonzero, the full Schur form T is required; if zero, only eigenvalues are required.

in
wantz

If nonzero, the matrix of Schur vectors Z is required; if zero, Schur vectors are not required.

in
n

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

in
ilo

First row/column of the active submatrix (0-based).

in
ihi

Last row/column of the active submatrix (0-based). It is assumed that H is already upper quasi-triangular in rows and columns 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 wantt is nonzero, H is upper quasi-triangular in rows and columns ilo:ihi.

in
ldh

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

out
wr

Double precision array, dimension (n). Real parts of computed eigenvalues ilo to ihi.

out
wi

Double precision array, dimension (n). Imaginary parts of computed eigenvalues ilo to ihi.

in
iloz

First row of Z to which transformations must be applied.

in
ihiz

Last row of Z to which transformations must be applied.

inout
Z

Double precision array, dimension (ldz, n). If wantz is nonzero, on entry Z must contain the current matrix Z of transformations, and on exit Z has been updated; transformations applied only to Z(iloz:ihiz, ilo:ihi).

in
ldz

Leading dimension of Z. ldz >= max(1, n).

out
info

  • = 0: successful exit

  • > 0: If info = i (1-based), DLAHQR failed to compute all eigenvalues; elements i:ihi of wr and wi contain those eigenvalues which have been successfully computed.

Functions

void clahqr(
    const INT  wantt,
    const INT  wantz,
    const INT  n,
    const INT  ilo,
    const INT  ihi,
          c64* H,
    const INT  ldh,
          c64* W,
    const INT  iloz,
    const INT  ihiz,
          c64* Z,
    const INT  ldz,
          INT* info
);
void clahqr(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, c64 *H, const INT ldh, c64 *W, const INT iloz, const INT ihiz, c64 *Z, const INT ldz, INT *info)#

CLAHQR is an auxiliary routine called by CHSEQR to update the eigenvalues and Schur decomposition already computed by CHSEQR, by dealing with the Hessenberg submatrix in rows and columns ilo to ihi.

Parameters

in
wantt

If nonzero, the full Schur form T is required; if zero, only eigenvalues are required.

in
wantz

If nonzero, the matrix of Schur vectors Z is required; if zero, Schur vectors are not required.

in
n

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

in
ilo

First row/column of the active submatrix (0-based).

in
ihi

Last row/column of the active submatrix (0-based).

inout
H

Complex array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info == 0 and wantt is nonzero, H is upper triangular in rows and columns ilo:ihi.

in
ldh

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

out
W

Complex array, dimension (n). The computed eigenvalues ilo to ihi.

in
iloz

First row of Z to which transformations must be applied.

in
ihiz

Last row of Z to which transformations must be applied.

inout
Z

Complex array, dimension (ldz, n).

in
ldz

Leading dimension of Z. ldz >= max(1, n).

out
info

= 0: successful exit > 0: if info = i (1-based), CLAHQR failed to compute all eigenvalues.

Functions

void zlahqr(
    const INT   wantt,
    const INT   wantz,
    const INT   n,
    const INT   ilo,
    const INT   ihi,
          c128* H,
    const INT   ldh,
          c128* W,
    const INT   iloz,
    const INT   ihiz,
          c128* Z,
    const INT   ldz,
          INT*  info
);
void zlahqr(const INT wantt, const INT wantz, const INT n, const INT ilo, const INT ihi, c128 *H, const INT ldh, c128 *W, const INT iloz, const INT ihiz, c128 *Z, const INT ldz, INT *info)#

ZLAHQR is an auxiliary routine called by ZHSEQR to update the eigenvalues and Schur decomposition already computed by ZHSEQR, by dealing with the Hessenberg submatrix in rows and columns ilo to ihi.

Parameters

in
wantt

If nonzero, the full Schur form T is required; if zero, only eigenvalues are required.

in
wantz

If nonzero, the matrix of Schur vectors Z is required; if zero, Schur vectors are not required.

in
n

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

in
ilo

First row/column of the active submatrix (0-based).

in
ihi

Last row/column of the active submatrix (0-based).

inout
H

Complex array, dimension (ldh, n). On entry, the upper Hessenberg matrix H. On exit, if info == 0 and wantt is nonzero, H is upper triangular in rows and columns ilo:ihi.

in
ldh

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

out
W

Complex array, dimension (n). The computed eigenvalues ilo to ihi.

in
iloz

First row of Z to which transformations must be applied.

in
ihiz

Last row of Z to which transformations must be applied.

inout
Z

Complex array, dimension (ldz, n).

in
ldz

Leading dimension of Z. ldz >= max(1, n).

out
info

= 0: successful exit > 0: if info = i (1-based), ZLAHQR failed to compute all eigenvalues.