laqr4#

Functions

void slaqr4(
    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,
          f32* work,
    const INT  lwork,
          INT* info
);
void slaqr4(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, f32 *work, const INT lwork, INT *info)#

SLAQR4 implements one level of recursion for SLAQR0.

It is a complete implementation of the small bulge multi-shift QR algorithm. It may be called by SLAQR0 and, for large enough deflation window size, it may be called by SLAQR3. This subroutine is identical to SLAQR0 except that it calls SLAQR2 instead of SLAQR3.

SLAQR4 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
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 index of isolated block (0-based).

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 wantt is nonzero, then H contains the upper quasi-triangular matrix T from the Schur decomposition (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.

in
iloz

First row of Z to update (0-based).

in
ihiz

Last row of Z to update (0-based).

inout
Z

Double precision array, dimension (ldz, n). If wantz is nonzero, Z is updated with the orthogonal Schur factor.

in
ldz

Leading dimension of Z. ldz >= 1; if wantz, ldz >= ihiz+1.

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, SLAQR4 failed to compute all of the eigenvalues. Elements ilo:info contain those eigenvalues which have been successfully computed.

Functions

void dlaqr4(
    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,
          f64* work,
    const INT  lwork,
          INT* info
);
void dlaqr4(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, f64 *work, const INT lwork, INT *info)#

DLAQR4 implements one level of recursion for DLAQR0.

It is a complete implementation of the small bulge multi-shift QR algorithm. It may be called by DLAQR0 and, for large enough deflation window size, it may be called by DLAQR3. This subroutine is identical to DLAQR0 except that it calls DLAQR2 instead of DLAQR3.

DLAQR4 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
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 index of isolated block (0-based).

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 wantt is nonzero, then H contains the upper quasi-triangular matrix T from the Schur decomposition (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.

in
iloz

First row of Z to update (0-based).

in
ihiz

Last row of Z to update (0-based).

inout
Z

Double precision array, dimension (ldz, n). If wantz is nonzero, Z is updated with the orthogonal Schur factor.

in
ldz

Leading dimension of Z. ldz >= 1; if wantz, ldz >= ihiz+1.

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, DLAQR4 failed to compute all of the eigenvalues. Elements ilo:info contain those eigenvalues which have been successfully computed.

Functions

void claqr4(
    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,
          c64* work,
    const INT  lwork,
          INT* info
);
void claqr4(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, c64 *work, const INT lwork, INT *info)#

CLAQR4 implements one level of recursion for CLAQR0.

It is a complete implementation of the small bulge multi-shift QR algorithm. It is identical to CLAQR0 except that it calls CLAQR2 instead of CLAQR3.

Parameters

in
wantt

If nonzero, the full Schur form T is required.

in
wantz

If nonzero, the matrix of Schur vectors Z is required.

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

in
ldh

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

out
W

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

in
iloz

First row of Z to update (0-based).

in
ihiz

Last row of Z to update (0-based).

inout
Z

Complex array, dimension (ldz, n).

in
ldz

Leading dimension of Z.

out
work

Complex array, dimension (lwork).

in
lwork

Dimension of work array. If lwork = -1, workspace query is assumed.

out
info

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

Functions

void zlaqr4(
    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,
          c128* work,
    const INT   lwork,
          INT*  info
);
void zlaqr4(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, c128 *work, const INT lwork, INT *info)#

ZLAQR4 implements one level of recursion for ZLAQR0.

It is a complete implementation of the small bulge multi-shift QR algorithm. It is identical to ZLAQR0 except that it calls ZLAQR2 instead of ZLAQR3.

Parameters

in
wantt

If nonzero, the full Schur form T is required.

in
wantz

If nonzero, the matrix of Schur vectors Z is required.

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

in
ldh

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

out
W

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

in
iloz

First row of Z to update (0-based).

in
ihiz

Last row of Z to update (0-based).

inout
Z

Complex array, dimension (ldz, n).

in
ldz

Leading dimension of Z.

out
work

Complex array, dimension (lwork).

in
lwork

Dimension of work array. If lwork = -1, workspace query is assumed.

out
info

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