ggevx#

Functions

void sggevx(
    const char*          balanc,
    const char*          jobvl,
    const char*          jobvr,
    const char*          sense,
    const INT            n,
          f32*  restrict A,
    const INT            lda,
          f32*  restrict B,
    const INT            ldb,
          f32*  restrict alphar,
          f32*  restrict alphai,
          f32*  restrict beta,
          f32*  restrict VL,
    const INT            ldvl,
          f32*  restrict VR,
    const INT            ldvr,
          INT*           ilo,
          INT*           ihi,
          f32*  restrict lscale,
          f32*  restrict rscale,
          f32*           abnrm,
          f32*           bbnrm,
          f32*  restrict rconde,
          f32*  restrict rcondv,
          f32*  restrict work,
    const INT            lwork,
          INT*  restrict iwork,
          INT*  restrict bwork,
          INT*           info
);
void sggevx(const char *balanc, const char *jobvl, const char *jobvr, const char *sense, const INT n, f32 *restrict A, const INT lda, f32 *restrict B, const INT ldb, f32 *restrict alphar, f32 *restrict alphai, f32 *restrict beta, f32 *restrict VL, const INT ldvl, f32 *restrict VR, const INT ldvr, INT *ilo, INT *ihi, f32 *restrict lscale, f32 *restrict rscale, f32 *abnrm, f32 *bbnrm, f32 *restrict rconde, f32 *restrict rcondv, f32 *restrict work, const INT lwork, INT *restrict iwork, INT *restrict bwork, INT *info)#

SGGEVX computes for a pair of N-by-N real nonsymmetric matrices (A,B) the generalized eigenvalues, and optionally, the left and/or right generalized eigenvectors.

Optionally also, it computes a balancing transformation to improve the conditioning of the eigenvalues and eigenvectors (ILO, IHI, LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition numbers for the eigenvalues (RCONDE), and reciprocal condition numbers for the right eigenvectors (RCONDV).

Parameters

in
balanc

Specifies the balance option to be performed. = ‘N’: do not diagonally scale or permute; = ‘P’: permute only; = ‘S’: scale only; = ‘B’: both permute and scale.

in
jobvl

= ‘N’: do not compute the left generalized eigenvectors; = ‘V’: compute the left generalized eigenvectors.

in
jobvr

= ‘N’: do not compute the right generalized eigenvectors; = ‘V’: compute the right generalized eigenvectors.

in
sense

Determines which reciprocal condition numbers are computed. = ‘N’: none are computed; = ‘E’: computed for eigenvalues only; = ‘V’: computed for eigenvectors only; = ‘B’: computed for eigenvalues and eigenvectors.

in
n

The order of the matrices A, B, VL, and VR. n >= 0.

inout
A

On entry, the matrix A in the pair (A,B). On exit, A has been overwritten.

in
lda

The leading dimension of A. lda >= max(1,n).

inout
B

On entry, the matrix B in the pair (A,B). On exit, B has been overwritten.

in
ldb

The leading dimension of B. ldb >= max(1,n).

out
alphar

Real parts of generalized eigenvalues.

out
alphai

Imaginary parts of generalized eigenvalues.

out
beta

Beta values of generalized eigenvalues.

out
VL

If jobvl = ‘V’, the left eigenvectors.

in
ldvl

The leading dimension of VL.

out
VR

If jobvr = ‘V’, the right eigenvectors.

in
ldvr

The leading dimension of VR.

out
ilo

See ihi.

out
ihi

ILO and IHI are integer values such that on exit A(i,j) = 0 and B(i,j) = 0 if i > j and j = 0,…,ILO-1 or i = IHI+1,…,N-1. If balanc = ‘N’ or ‘S’, ILO = 0 and IHI = N-1.

out
lscale

Array of dimension (n). Details of the permutations and scaling factors applied to the left side of A and B. If PL(j) is the index of the row interchanged with row j, and DL(j) is the scaling factor applied to row j, then lscale[j] = PL(j) for j = 0,…,ILO-1 = DL(j) for j = ILO,…,IHI = PL(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
rscale

Array of dimension (n). Details of the permutations and scaling factors applied to the right side of A and B. If PR(j) is the index of the column interchanged with column j, and DR(j) is the scaling factor applied to column j, then rscale[j] = PR(j) for j = 0,…,ILO-1 = DR(j) for j = ILO,…,IHI = PR(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
abnrm

The one-norm of the balanced matrix A.

out
bbnrm

The one-norm of the balanced matrix B.

out
rconde

Reciprocal condition numbers for eigenvalues.

out
rcondv

Reciprocal condition numbers for eigenvectors.

out
work

Workspace array.

in
lwork

The dimension of work.

out
iwork

Integer workspace array.

out
bwork

Integer array, dimension (n).

out
info

  • = 0: successful exit

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

  • > 0: errors from QZ iteration or eigenvector computation

Functions

void dggevx(
    const char*          balanc,
    const char*          jobvl,
    const char*          jobvr,
    const char*          sense,
    const INT            n,
          f64*  restrict A,
    const INT            lda,
          f64*  restrict B,
    const INT            ldb,
          f64*  restrict alphar,
          f64*  restrict alphai,
          f64*  restrict beta,
          f64*  restrict VL,
    const INT            ldvl,
          f64*  restrict VR,
    const INT            ldvr,
          INT*           ilo,
          INT*           ihi,
          f64*  restrict lscale,
          f64*  restrict rscale,
          f64*           abnrm,
          f64*           bbnrm,
          f64*  restrict rconde,
          f64*  restrict rcondv,
          f64*  restrict work,
    const INT            lwork,
          INT*  restrict iwork,
          INT*  restrict bwork,
          INT*           info
);
void dggevx(const char *balanc, const char *jobvl, const char *jobvr, const char *sense, const INT n, f64 *restrict A, const INT lda, f64 *restrict B, const INT ldb, f64 *restrict alphar, f64 *restrict alphai, f64 *restrict beta, f64 *restrict VL, const INT ldvl, f64 *restrict VR, const INT ldvr, INT *ilo, INT *ihi, f64 *restrict lscale, f64 *restrict rscale, f64 *abnrm, f64 *bbnrm, f64 *restrict rconde, f64 *restrict rcondv, f64 *restrict work, const INT lwork, INT *restrict iwork, INT *restrict bwork, INT *info)#

DGGEVX computes for a pair of N-by-N real nonsymmetric matrices (A,B) the generalized eigenvalues, and optionally, the left and/or right generalized eigenvectors.

Optionally also, it computes a balancing transformation to improve the conditioning of the eigenvalues and eigenvectors (ILO, IHI, LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition numbers for the eigenvalues (RCONDE), and reciprocal condition numbers for the right eigenvectors (RCONDV).

Parameters

in
balanc

Specifies the balance option to be performed. = ‘N’: do not diagonally scale or permute; = ‘P’: permute only; = ‘S’: scale only; = ‘B’: both permute and scale.

in
jobvl

= ‘N’: do not compute the left generalized eigenvectors; = ‘V’: compute the left generalized eigenvectors.

in
jobvr

= ‘N’: do not compute the right generalized eigenvectors; = ‘V’: compute the right generalized eigenvectors.

in
sense

Determines which reciprocal condition numbers are computed. = ‘N’: none are computed; = ‘E’: computed for eigenvalues only; = ‘V’: computed for eigenvectors only; = ‘B’: computed for eigenvalues and eigenvectors.

in
n

The order of the matrices A, B, VL, and VR. n >= 0.

inout
A

On entry, the matrix A in the pair (A,B). On exit, A has been overwritten.

in
lda

The leading dimension of A. lda >= max(1,n).

inout
B

On entry, the matrix B in the pair (A,B). On exit, B has been overwritten.

in
ldb

The leading dimension of B. ldb >= max(1,n).

out
alphar

Real parts of generalized eigenvalues.

out
alphai

Imaginary parts of generalized eigenvalues.

out
beta

Beta values of generalized eigenvalues.

out
VL

If jobvl = ‘V’, the left eigenvectors.

in
ldvl

The leading dimension of VL.

out
VR

If jobvr = ‘V’, the right eigenvectors.

in
ldvr

The leading dimension of VR.

out
ilo

See ihi.

out
ihi

ILO and IHI are integer values such that on exit A(i,j) = 0 and B(i,j) = 0 if i > j and j = 0,…,ILO-1 or i = IHI+1,…,N-1. If balanc = ‘N’ or ‘S’, ILO = 0 and IHI = N-1.

out
lscale

Array of dimension (n). Details of the permutations and scaling factors applied to the left side of A and B. If PL(j) is the index of the row interchanged with row j, and DL(j) is the scaling factor applied to row j, then lscale[j] = PL(j) for j = 0,…,ILO-1 = DL(j) for j = ILO,…,IHI = PL(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
rscale

Array of dimension (n). Details of the permutations and scaling factors applied to the right side of A and B. If PR(j) is the index of the column interchanged with column j, and DR(j) is the scaling factor applied to column j, then rscale[j] = PR(j) for j = 0,…,ILO-1 = DR(j) for j = ILO,…,IHI = PR(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
abnrm

The one-norm of the balanced matrix A.

out
bbnrm

The one-norm of the balanced matrix B.

out
rconde

Reciprocal condition numbers for eigenvalues.

out
rcondv

Reciprocal condition numbers for eigenvectors.

out
work

Workspace array.

in
lwork

The dimension of work.

out
iwork

Integer workspace array.

out
bwork

Integer array, dimension (n).

out
info

  • = 0: successful exit

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

  • > 0: errors from QZ iteration or eigenvector computation

Functions

void cggevx(
    const char*          balanc,
    const char*          jobvl,
    const char*          jobvr,
    const char*          sense,
    const INT            n,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict B,
    const INT            ldb,
          c64*  restrict alpha,
          c64*  restrict beta,
          c64*  restrict VL,
    const INT            ldvl,
          c64*  restrict VR,
    const INT            ldvr,
          INT*           ilo,
          INT*           ihi,
          f32*  restrict lscale,
          f32*  restrict rscale,
          f32*           abnrm,
          f32*           bbnrm,
          f32*  restrict rconde,
          f32*  restrict rcondv,
          c64*  restrict work,
    const INT            lwork,
          f32*  restrict rwork,
          INT*  restrict iwork,
          INT*  restrict bwork,
          INT*           info
);
void cggevx(const char *balanc, const char *jobvl, const char *jobvr, const char *sense, const INT n, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, c64 *restrict alpha, c64 *restrict beta, c64 *restrict VL, const INT ldvl, c64 *restrict VR, const INT ldvr, INT *ilo, INT *ihi, f32 *restrict lscale, f32 *restrict rscale, f32 *abnrm, f32 *bbnrm, f32 *restrict rconde, f32 *restrict rcondv, c64 *restrict work, const INT lwork, f32 *restrict rwork, INT *restrict iwork, INT *restrict bwork, INT *info)#

CGGEVX computes for a pair of N-by-N complex nonsymmetric matrices (A,B) the generalized eigenvalues, and optionally, the left and/or right generalized eigenvectors.

Optionally, it also computes a balancing transformation to improve the conditioning of the eigenvalues and eigenvectors (ILO, IHI, LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition numbers for the eigenvalues (RCONDE), and reciprocal condition numbers for the right eigenvectors (RCONDV).

Parameters

in
balanc

Specifies the balance option to be performed. = ‘N’: do not diagonally scale or permute; = ‘P’: permute only; = ‘S’: scale only; = ‘B’: both permute and scale.

in
jobvl

= ‘N’: do not compute the left generalized eigenvectors; = ‘V’: compute the left generalized eigenvectors.

in
jobvr

= ‘N’: do not compute the right generalized eigenvectors; = ‘V’: compute the right generalized eigenvectors.

in
sense

Determines which reciprocal condition numbers are computed. = ‘N’: none are computed; = ‘E’: computed for eigenvalues only; = ‘V’: computed for eigenvectors only; = ‘B’: computed for eigenvalues and eigenvectors.

in
n

The order of the matrices A, B, VL, and VR. n >= 0.

inout
A

On entry, the matrix A in the pair (A,B). On exit, A has been overwritten.

in
lda

The leading dimension of A. lda >= max(1,n).

inout
B

On entry, the matrix B in the pair (A,B). On exit, B has been overwritten.

in
ldb

The leading dimension of B. ldb >= max(1,n).

out
alpha

Complex array, dimension (n).

out
beta

Complex array, dimension (n). On exit, ALPHA(j)/BETA(j), j=0,…,n-1, will be the generalized eigenvalues.

out
VL

If jobvl = ‘V’, the left eigenvectors.

in
ldvl

The leading dimension of VL.

out
VR

If jobvr = ‘V’, the right eigenvectors.

in
ldvr

The leading dimension of VR.

out
ilo

See ihi.

out
ihi

ILO and IHI are integer values such that on exit A(i,j) = 0 and B(i,j) = 0 if i > j and j = 0,…,ILO-1 or i = IHI+1,…,N-1. If balanc = ‘N’ or ‘S’, ILO = 0 and IHI = N-1.

out
lscale

Array of dimension (n). Details of the permutations and scaling factors applied to the left side of A and B. If PL(j) is the index of the row interchanged with row j, and DL(j) is the scaling factor applied to row j, then lscale[j] = PL(j) for j = 0,…,ILO-1 = DL(j) for j = ILO,…,IHI = PL(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
rscale

Array of dimension (n). Details of the permutations and scaling factors applied to the right side of A and B. If PR(j) is the index of the column interchanged with column j, and DR(j) is the scaling factor applied to column j, then rscale[j] = PR(j) for j = 0,…,ILO-1 = DR(j) for j = ILO,…,IHI = PR(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
abnrm

The one-norm of the balanced matrix A.

out
bbnrm

The one-norm of the balanced matrix B.

out
rconde

Reciprocal condition numbers for eigenvalues.

out
rcondv

Reciprocal condition numbers for eigenvectors.

out
work

Complex workspace array.

in
lwork

The dimension of work.

out
rwork

Single precision workspace array.

out
iwork

Integer workspace array.

out
bwork

Integer array, dimension (n).

out
info

  • = 0: successful exit

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

  • > 0: errors from QZ iteration or eigenvector computation

Functions

void zggevx(
    const char*          balanc,
    const char*          jobvl,
    const char*          jobvr,
    const char*          sense,
    const INT            n,
          c128* restrict A,
    const INT            lda,
          c128* restrict B,
    const INT            ldb,
          c128* restrict alpha,
          c128* restrict beta,
          c128* restrict VL,
    const INT            ldvl,
          c128* restrict VR,
    const INT            ldvr,
          INT*           ilo,
          INT*           ihi,
          f64*  restrict lscale,
          f64*  restrict rscale,
          f64*           abnrm,
          f64*           bbnrm,
          f64*  restrict rconde,
          f64*  restrict rcondv,
          c128* restrict work,
    const INT            lwork,
          f64*  restrict rwork,
          INT*  restrict iwork,
          INT*  restrict bwork,
          INT*           info
);
void zggevx(const char *balanc, const char *jobvl, const char *jobvr, const char *sense, const INT n, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, c128 *restrict alpha, c128 *restrict beta, c128 *restrict VL, const INT ldvl, c128 *restrict VR, const INT ldvr, INT *ilo, INT *ihi, f64 *restrict lscale, f64 *restrict rscale, f64 *abnrm, f64 *bbnrm, f64 *restrict rconde, f64 *restrict rcondv, c128 *restrict work, const INT lwork, f64 *restrict rwork, INT *restrict iwork, INT *restrict bwork, INT *info)#

ZGGEVX computes for a pair of N-by-N complex nonsymmetric matrices (A,B) the generalized eigenvalues, and optionally, the left and/or right generalized eigenvectors.

Optionally, it also computes a balancing transformation to improve the conditioning of the eigenvalues and eigenvectors (ILO, IHI, LSCALE, RSCALE, ABNRM, and BBNRM), reciprocal condition numbers for the eigenvalues (RCONDE), and reciprocal condition numbers for the right eigenvectors (RCONDV).

Parameters

in
balanc

Specifies the balance option to be performed. = ‘N’: do not diagonally scale or permute; = ‘P’: permute only; = ‘S’: scale only; = ‘B’: both permute and scale.

in
jobvl

= ‘N’: do not compute the left generalized eigenvectors; = ‘V’: compute the left generalized eigenvectors.

in
jobvr

= ‘N’: do not compute the right generalized eigenvectors; = ‘V’: compute the right generalized eigenvectors.

in
sense

Determines which reciprocal condition numbers are computed. = ‘N’: none are computed; = ‘E’: computed for eigenvalues only; = ‘V’: computed for eigenvectors only; = ‘B’: computed for eigenvalues and eigenvectors.

in
n

The order of the matrices A, B, VL, and VR. n >= 0.

inout
A

On entry, the matrix A in the pair (A,B). On exit, A has been overwritten.

in
lda

The leading dimension of A. lda >= max(1,n).

inout
B

On entry, the matrix B in the pair (A,B). On exit, B has been overwritten.

in
ldb

The leading dimension of B. ldb >= max(1,n).

out
alpha

Complex array, dimension (n).

out
beta

Complex array, dimension (n). On exit, ALPHA(j)/BETA(j), j=0,…,n-1, will be the generalized eigenvalues.

out
VL

If jobvl = ‘V’, the left eigenvectors.

in
ldvl

The leading dimension of VL.

out
VR

If jobvr = ‘V’, the right eigenvectors.

in
ldvr

The leading dimension of VR.

out
ilo

See ihi.

out
ihi

ILO and IHI are integer values such that on exit A(i,j) = 0 and B(i,j) = 0 if i > j and j = 0,…,ILO-1 or i = IHI+1,…,N-1. If balanc = ‘N’ or ‘S’, ILO = 0 and IHI = N-1.

out
lscale

Array of dimension (n). Details of the permutations and scaling factors applied to the left side of A and B. If PL(j) is the index of the row interchanged with row j, and DL(j) is the scaling factor applied to row j, then lscale[j] = PL(j) for j = 0,…,ILO-1 = DL(j) for j = ILO,…,IHI = PL(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
rscale

Array of dimension (n). Details of the permutations and scaling factors applied to the right side of A and B. If PR(j) is the index of the column interchanged with column j, and DR(j) is the scaling factor applied to column j, then rscale[j] = PR(j) for j = 0,…,ILO-1 = DR(j) for j = ILO,…,IHI = PR(j) for j = IHI+1,…,N-1. The order in which the interchanges are made is N-1 to IHI+1, then 0 to ILO-1.

out
abnrm

The one-norm of the balanced matrix A.

out
bbnrm

The one-norm of the balanced matrix B.

out
rconde

Reciprocal condition numbers for eigenvalues.

out
rcondv

Reciprocal condition numbers for eigenvectors.

out
work

Complex workspace array.

in
lwork

The dimension of work.

out
rwork

Double precision workspace array.

out
iwork

Integer workspace array.

out
bwork

Integer array, dimension (n).

out
info

  • = 0: successful exit

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

  • > 0: errors from QZ iteration or eigenvector computation