gghrd#

Functions

void sgghrd(
    const char*          compq,
    const char*          compz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          f32*  restrict A,
    const INT            lda,
          f32*  restrict B,
    const INT            ldb,
          f32*  restrict Q,
    const INT            ldq,
          f32*  restrict Z,
    const INT            ldz,
          INT*           info
);
void sgghrd(const char *compq, const char *compz, const INT n, const INT ilo, const INT ihi, f32 *restrict A, const INT lda, f32 *restrict B, const INT ldb, f32 *restrict Q, const INT ldq, f32 *restrict Z, const INT ldz, INT *info)#

SGGHRD reduces a pair of real matrices (A,B) to generalized upper Hessenberg form using orthogonal transformations, where A is a general matrix and B is upper triangular.

The form of the generalized eigenvalue problem is A*x = lambda*B*x, and B is typically made upper triangular by computing its QR factorization and moving the orthogonal matrix Q to the left side of the equation.

This subroutine simultaneously reduces A to a Hessenberg matrix H: Q**T*A*Z = H and transforms B to another upper triangular matrix T: Q**T*B*Z = T in order to reduce the problem to its standard form H*y = lambda*T*y where y = Z**T*x.

Parameters

in
compq

= ‘N’: do not compute Q; = ‘I’: Q is initialized to the unit matrix; = ‘V’: Q must contain an orthogonal matrix Q1 on entry.

in
compz

= ‘N’: do not compute Z; = ‘I’: Z is initialized to the unit matrix; = ‘V’: Z must contain an orthogonal matrix Z1 on entry.

in
n

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

in
ilo

See ihi.

in
ihi

ILO and IHI mark the rows and columns of A which are to be reduced. It is assumed that A is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1. ILO and IHI are normally set by a previous call to SGGBAL; otherwise they should be set to 0 and n-1 respectively. 0 <= ilo <= ihi <= n-1, if n > 0; ilo=0 and ihi=-1, if n=0.

inout
A

Array of dimension (lda, n). On entry, the N-by-N general matrix. On exit, the upper Hessenberg matrix H.

in
lda

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

inout
B

Array of dimension (ldb, n). On entry, the upper triangular matrix B. On exit, the upper triangular matrix T.

in
ldb

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

inout
Q

Array of dimension (ldq, n). The orthogonal matrix Q.

in
ldq

The leading dimension of Q. ldq >= N if COMPQ=’V’ or ‘I’.

inout
Z

Array of dimension (ldz, n). The orthogonal matrix Z.

in
ldz

The leading dimension of Z. ldz >= N if COMPZ=’V’ or ‘I’.

out
info

  • = 0: successful exit

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

Functions

void dgghrd(
    const char*          compq,
    const char*          compz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          f64*  restrict A,
    const INT            lda,
          f64*  restrict B,
    const INT            ldb,
          f64*  restrict Q,
    const INT            ldq,
          f64*  restrict Z,
    const INT            ldz,
          INT*           info
);
void dgghrd(const char *compq, const char *compz, const INT n, const INT ilo, const INT ihi, f64 *restrict A, const INT lda, f64 *restrict B, const INT ldb, f64 *restrict Q, const INT ldq, f64 *restrict Z, const INT ldz, INT *info)#

DGGHRD reduces a pair of real matrices (A,B) to generalized upper Hessenberg form using orthogonal transformations, where A is a general matrix and B is upper triangular.

The form of the generalized eigenvalue problem is A*x = lambda*B*x, and B is typically made upper triangular by computing its QR factorization and moving the orthogonal matrix Q to the left side of the equation.

This subroutine simultaneously reduces A to a Hessenberg matrix H: Q**T*A*Z = H and transforms B to another upper triangular matrix T: Q**T*B*Z = T in order to reduce the problem to its standard form H*y = lambda*T*y where y = Z**T*x.

Parameters

in
compq

= ‘N’: do not compute Q; = ‘I’: Q is initialized to the unit matrix; = ‘V’: Q must contain an orthogonal matrix Q1 on entry.

in
compz

= ‘N’: do not compute Z; = ‘I’: Z is initialized to the unit matrix; = ‘V’: Z must contain an orthogonal matrix Z1 on entry.

in
n

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

in
ilo

See ihi.

in
ihi

ILO and IHI mark the rows and columns of A which are to be reduced. It is assumed that A is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1. ILO and IHI are normally set by a previous call to DGGBAL; otherwise they should be set to 0 and n-1 respectively. 0 <= ilo <= ihi <= n-1, if n > 0; ilo=0 and ihi=-1, if n=0.

inout
A

Array of dimension (lda, n). On entry, the N-by-N general matrix. On exit, the upper Hessenberg matrix H.

in
lda

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

inout
B

Array of dimension (ldb, n). On entry, the upper triangular matrix B. On exit, the upper triangular matrix T.

in
ldb

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

inout
Q

Array of dimension (ldq, n). The orthogonal matrix Q.

in
ldq

The leading dimension of Q. ldq >= N if COMPQ=’V’ or ‘I’.

inout
Z

Array of dimension (ldz, n). The orthogonal matrix Z.

in
ldz

The leading dimension of Z. ldz >= N if COMPZ=’V’ or ‘I’.

out
info

  • = 0: successful exit

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

Functions

void cgghrd(
    const char*          compq,
    const char*          compz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict B,
    const INT            ldb,
          c64*  restrict Q,
    const INT            ldq,
          c64*  restrict Z,
    const INT            ldz,
          INT*           info
);
void cgghrd(const char *compq, const char *compz, const INT n, const INT ilo, const INT ihi, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, c64 *restrict Q, const INT ldq, c64 *restrict Z, const INT ldz, INT *info)#

CGGHRD reduces a pair of complex matrices (A,B) to generalized upper Hessenberg form using unitary transformations, where A is a general matrix and B is upper triangular.

The form of the generalized eigenvalue problem is A*x = lambda*B*x, and B is typically made upper triangular by computing its QR factorization and moving the unitary matrix Q to the left side of the equation.

This subroutine simultaneously reduces A to a Hessenberg matrix H: Q**H*A*Z = H and transforms B to another upper triangular matrix T: Q**H*B*Z = T in order to reduce the problem to its standard form H*y = lambda*T*y where y = Z**H*x.

The unitary matrices Q and Z are determined as products of Givens rotations. They may either be formed explicitly, or they may be postmultiplied into input matrices Q1 and Z1, so that Q1 * A * Z1**H = (Q1*Q) * H * (Z1*Z)**H Q1 * B * Z1**H = (Q1*Q) * T * (Z1*Z)**H

Parameters

in
compq

= ‘N’: do not compute Q; = ‘I’: Q is initialized to the unit matrix; = ‘V’: Q must contain a unitary matrix Q1 on entry.

in
compz

= ‘N’: do not compute Z; = ‘I’: Z is initialized to the unit matrix; = ‘V’: Z must contain a unitary matrix Z1 on entry.

in
n

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

in
ilo

See ihi.

in
ihi

ILO and IHI mark the rows and columns of A which are to be reduced. It is assumed that A is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1. ILO and IHI are normally set by a previous call to CGGBAL; otherwise they should be set to 0 and n-1 respectively. 0 <= ilo <= ihi <= n-1, if n > 0; ilo=0 and ihi=-1, if n=0.

inout
A

Array of dimension (lda, n). On entry, the N-by-N general matrix. On exit, the upper Hessenberg matrix H.

in
lda

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

inout
B

Array of dimension (ldb, n). On entry, the upper triangular matrix B. On exit, the upper triangular matrix T.

in
ldb

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

inout
Q

Array of dimension (ldq, n). The unitary matrix Q.

in
ldq

The leading dimension of Q. ldq >= N if COMPQ=’V’ or ‘I’.

inout
Z

Array of dimension (ldz, n). The unitary matrix Z.

in
ldz

The leading dimension of Z. ldz >= N if COMPZ=’V’ or ‘I’.

out
info

  • = 0: successful exit

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

Functions

void zgghrd(
    const char*          compq,
    const char*          compz,
    const INT            n,
    const INT            ilo,
    const INT            ihi,
          c128* restrict A,
    const INT            lda,
          c128* restrict B,
    const INT            ldb,
          c128* restrict Q,
    const INT            ldq,
          c128* restrict Z,
    const INT            ldz,
          INT*           info
);
void zgghrd(const char *compq, const char *compz, const INT n, const INT ilo, const INT ihi, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, c128 *restrict Q, const INT ldq, c128 *restrict Z, const INT ldz, INT *info)#

ZGGHRD reduces a pair of complex matrices (A,B) to generalized upper Hessenberg form using unitary transformations, where A is a general matrix and B is upper triangular.

The form of the generalized eigenvalue problem is A*x = lambda*B*x, and B is typically made upper triangular by computing its QR factorization and moving the unitary matrix Q to the left side of the equation.

This subroutine simultaneously reduces A to a Hessenberg matrix H: Q**H*A*Z = H and transforms B to another upper triangular matrix T: Q**H*B*Z = T in order to reduce the problem to its standard form H*y = lambda*T*y where y = Z**H*x.

The unitary matrices Q and Z are determined as products of Givens rotations. They may either be formed explicitly, or they may be postmultiplied into input matrices Q1 and Z1, so that Q1 * A * Z1**H = (Q1*Q) * H * (Z1*Z)**H Q1 * B * Z1**H = (Q1*Q) * T * (Z1*Z)**H

Parameters

in
compq

= ‘N’: do not compute Q; = ‘I’: Q is initialized to the unit matrix; = ‘V’: Q must contain a unitary matrix Q1 on entry.

in
compz

= ‘N’: do not compute Z; = ‘I’: Z is initialized to the unit matrix; = ‘V’: Z must contain a unitary matrix Z1 on entry.

in
n

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

in
ilo

See ihi.

in
ihi

ILO and IHI mark the rows and columns of A which are to be reduced. It is assumed that A is already upper triangular in rows and columns 0:ilo-1 and ihi+1:n-1. ILO and IHI are normally set by a previous call to ZGGBAL; otherwise they should be set to 0 and n-1 respectively. 0 <= ilo <= ihi <= n-1, if n > 0; ilo=0 and ihi=-1, if n=0.

inout
A

Array of dimension (lda, n). On entry, the N-by-N general matrix. On exit, the upper Hessenberg matrix H.

in
lda

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

inout
B

Array of dimension (ldb, n). On entry, the upper triangular matrix B. On exit, the upper triangular matrix T.

in
ldb

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

inout
Q

Array of dimension (ldq, n). The unitary matrix Q.

in
ldq

The leading dimension of Q. ldq >= N if COMPQ=’V’ or ‘I’.

inout
Z

Array of dimension (ldz, n). The unitary matrix Z.

in
ldz

The leading dimension of Z. ldz >= N if COMPZ=’V’ or ‘I’.

out
info

  • = 0: successful exit

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