laqz0#

Functions

void slaqz0(
    const char*          wants,
    const char*          wantq,
    const char*          wantz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          f32*  restrict A,
    const INT            lda,
          f32*  restrict B,
    const INT            ldb,
          f32*  restrict alphar,
          f32*  restrict alphai,
          f32*  restrict beta,
          f32*  restrict Q,
    const INT            ldq,
          f32*  restrict Z,
    const INT            ldz,
          f32*  restrict work,
    const INT            lwork,
    const INT            rec,
          INT*           info
);
void slaqz0(const char *wants, const char *wantq, const char *wantz, const INT n, const INT ilo, const INT ihi, f32 *restrict A, const INT lda, f32 *restrict B, const INT ldb, f32 *restrict alphar, f32 *restrict alphai, f32 *restrict beta, f32 *restrict Q, const INT ldq, f32 *restrict Z, const INT ldz, f32 *restrict work, const INT lwork, const INT rec, INT *info)#

SLAQZ0 computes the eigenvalues of a real matrix pair (H,T), where H is an upper Hessenberg matrix and T is upper triangular, using the double-shift QZ method with aggressive early deflation.

Parameters

in
wants

‘E’: Compute eigenvalues only; ‘S’: Compute Schur form.

in
wantq

‘N’: Q not computed; ‘I’: Q initialized; ‘V’: Q updated.

in
wantz

‘N’: Z not computed; ‘I’: Z initialized; ‘V’: Z updated.

in
n

The order of the matrices A, B, Q, and Z. n >= 0.

in
ilo

Lower bound of active submatrix (0-based).

in
ihi

Upper bound of active submatrix (0-based).

inout
A

Upper Hessenberg matrix A.

in
lda

Leading dimension of A.

inout
B

Upper triangular matrix B.

in
ldb

Leading dimension of B.

out
alphar

Real parts of eigenvalues.

out
alphai

Imaginary parts of eigenvalues.

out
beta

Scale factors for eigenvalues.

inout
Q

Left Schur vectors.

in
ldq

Leading dimension of Q.

inout
Z

Right Schur vectors.

in
ldz

Leading dimension of Z.

out
work

Workspace array.

in
lwork

Dimension of workspace. If lwork = -1, workspace query.

in
rec

Current recursion level. Should be set to 0 on first call.

out
info

  • = 0: successful exit.

Functions

void dlaqz0(
    const char*          wants,
    const char*          wantq,
    const char*          wantz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          f64*  restrict A,
    const INT            lda,
          f64*  restrict B,
    const INT            ldb,
          f64*  restrict alphar,
          f64*  restrict alphai,
          f64*  restrict beta,
          f64*  restrict Q,
    const INT            ldq,
          f64*  restrict Z,
    const INT            ldz,
          f64*  restrict work,
    const INT            lwork,
    const INT            rec,
          INT*           info
);
void dlaqz0(const char *wants, const char *wantq, const char *wantz, const INT n, const INT ilo, const INT ihi, f64 *restrict A, const INT lda, f64 *restrict B, const INT ldb, f64 *restrict alphar, f64 *restrict alphai, f64 *restrict beta, f64 *restrict Q, const INT ldq, f64 *restrict Z, const INT ldz, f64 *restrict work, const INT lwork, const INT rec, INT *info)#

DLAQZ0 computes the eigenvalues of a real matrix pair (H,T), where H is an upper Hessenberg matrix and T is upper triangular, using the f64-shift QZ method with aggressive early deflation.

Parameters

in
wants

‘E’: Compute eigenvalues only; ‘S’: Compute Schur form.

in
wantq

‘N’: Q not computed; ‘I’: Q initialized; ‘V’: Q updated.

in
wantz

‘N’: Z not computed; ‘I’: Z initialized; ‘V’: Z updated.

in
n

The order of the matrices A, B, Q, and Z. n >= 0.

in
ilo

Lower bound of active submatrix (0-based).

in
ihi

Upper bound of active submatrix (0-based).

inout
A

Upper Hessenberg matrix A.

in
lda

Leading dimension of A.

inout
B

Upper triangular matrix B.

in
ldb

Leading dimension of B.

out
alphar

Real parts of eigenvalues.

out
alphai

Imaginary parts of eigenvalues.

out
beta

Scale factors for eigenvalues.

inout
Q

Left Schur vectors.

in
ldq

Leading dimension of Q.

inout
Z

Right Schur vectors.

in
ldz

Leading dimension of Z.

out
work

Workspace array.

in
lwork

Dimension of workspace. If lwork = -1, workspace query.

in
rec

Current recursion level. Should be set to 0 on first call.

out
info

  • = 0: successful exit.

Functions

void claqz0(
    const char*          wants,
    const char*          wantq,
    const char*          wantz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict B,
    const INT            ldb,
          c64*  restrict alpha,
          c64*  restrict beta,
          c64*  restrict Q,
    const INT            ldq,
          c64*  restrict Z,
    const INT            ldz,
          c64*  restrict work,
    const INT            lwork,
          f32*  restrict rwork,
    const INT            rec,
          INT*           info
);
void claqz0(const char *wants, const char *wantq, const char *wantz, const INT n, const INT ilo, const INT ihi, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, c64 *restrict alpha, c64 *restrict beta, c64 *restrict Q, const INT ldq, c64 *restrict Z, const INT ldz, c64 *restrict work, const INT lwork, f32 *restrict rwork, const INT rec, INT *info)#

CLAQZ0 computes the eigenvalues of a complex matrix pair (H,T), where H is an upper Hessenberg matrix and T is upper triangular, using the single-shift QZ method.

Matrix pairs of this type are produced by the reduction to generalized upper Hessenberg form of a complex matrix pair (A,B):

A = Q1*H*Z1**H, B = Q1*T*Z1**H,

as computed by CGGHRD.

If JOB=’S’, then the Hessenberg-triangular pair (H,T) is also reduced to generalized Schur form,

H = Q*S*Z**H, T = Q*P*Z**H,

where Q and Z are unitary matrices, P and S are upper triangular.

Parameters

in
wants

‘E’: Compute eigenvalues only; ‘S’: Compute Schur form.

in
wantq

‘N’: Q not computed; ‘I’: Q initialized; ‘V’: Q updated.

in
wantz

‘N’: Z not computed; ‘I’: Z initialized; ‘V’: Z updated.

in
n

The order of the matrices A, B, Q, and Z. n >= 0.

in
ilo

0-based lower bound of active submatrix.

in
ihi

0-based upper bound of active submatrix.

inout
A

Complex array, dimension (lda, n). Upper Hessenberg matrix.

in
lda

Leading dimension of A.

inout
B

Complex array, dimension (ldb, n). Upper triangular matrix.

in
ldb

Leading dimension of B.

out
alpha

Complex array, dimension (n). Eigenvalue numerators.

out
beta

Complex array, dimension (n). Eigenvalue denominators.

inout
Q

Complex array, dimension (ldq, n). Left Schur vectors.

in
ldq

Leading dimension of Q.

inout
Z

Complex array, dimension (ldz, n). Right Schur vectors.

in
ldz

Leading dimension of Z.

out
work

Complex workspace array, dimension (max(1, lwork)).

in
lwork

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

out
rwork

Single precision array, dimension (n).

in
rec

Current recursion level. Should be set to 0 on first call.

out
info

= 0: successful exit. < 0: if info = -i, the i-th argument had an illegal value. = 1,…,N: the QZ iteration did not converge.

Functions

void zlaqz0(
    const char*          wants,
    const char*          wantq,
    const char*          wantz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          c128* restrict A,
    const INT            lda,
          c128* restrict B,
    const INT            ldb,
          c128* restrict alpha,
          c128* restrict beta,
          c128* restrict Q,
    const INT            ldq,
          c128* restrict Z,
    const INT            ldz,
          c128* restrict work,
    const INT            lwork,
          f64*  restrict rwork,
    const INT            rec,
          INT*           info
);
void zlaqz0(const char *wants, const char *wantq, const char *wantz, const INT n, const INT ilo, const INT ihi, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, c128 *restrict alpha, c128 *restrict beta, c128 *restrict Q, const INT ldq, c128 *restrict Z, const INT ldz, c128 *restrict work, const INT lwork, f64 *restrict rwork, const INT rec, INT *info)#

ZLAQZ0 computes the eigenvalues of a complex matrix pair (H,T), where H is an upper Hessenberg matrix and T is upper triangular, using the single-shift QZ method.

Matrix pairs of this type are produced by the reduction to generalized upper Hessenberg form of a complex matrix pair (A,B):

A = Q1*H*Z1**H, B = Q1*T*Z1**H,

as computed by ZGGHRD.

If JOB=’S’, then the Hessenberg-triangular pair (H,T) is also reduced to generalized Schur form,

H = Q*S*Z**H, T = Q*P*Z**H,

where Q and Z are unitary matrices, P and S are upper triangular.

Parameters

in
wants

‘E’: Compute eigenvalues only; ‘S’: Compute Schur form.

in
wantq

‘N’: Q not computed; ‘I’: Q initialized; ‘V’: Q updated.

in
wantz

‘N’: Z not computed; ‘I’: Z initialized; ‘V’: Z updated.

in
n

The order of the matrices A, B, Q, and Z. n >= 0.

in
ilo

0-based lower bound of active submatrix.

in
ihi

0-based upper bound of active submatrix.

inout
A

Complex array, dimension (lda, n). Upper Hessenberg matrix.

in
lda

Leading dimension of A.

inout
B

Complex array, dimension (ldb, n). Upper triangular matrix.

in
ldb

Leading dimension of B.

out
alpha

Complex array, dimension (n). Eigenvalue numerators.

out
beta

Complex array, dimension (n). Eigenvalue denominators.

inout
Q

Complex array, dimension (ldq, n). Left Schur vectors.

in
ldq

Leading dimension of Q.

inout
Z

Complex array, dimension (ldz, n). Right Schur vectors.

in
ldz

Leading dimension of Z.

out
work

Complex workspace array, dimension (max(1, lwork)).

in
lwork

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

out
rwork

Double precision array, dimension (n).

in
rec

Current recursion level. Should be set to 0 on first call.

out
info

= 0: successful exit. < 0: if info = -i, the i-th argument had an illegal value. = 1,…,N: the QZ iteration did not converge.