Visible to Intel only — GUID: GUID-7E36D59F-76D0-46E4-800F-D4CB4755205A
Visible to Intel only — GUID: GUID-7E36D59F-76D0-46E4-800F-D4CB4755205A
?gghrd
Reduces a pair of matrices to generalized upper Hessenberg form using orthogonal/unitary transformations.
Syntax
lapack_int LAPACKE_sgghrd (int matrix_layout, char compq, char compz, lapack_int n, lapack_int ilo, lapack_int ihi, float* a, lapack_int lda, float* b, lapack_int ldb, float* q, lapack_int ldq, float* z, lapack_int ldz);
lapack_int LAPACKE_dgghrd (int matrix_layout, char compq, char compz, lapack_int n, lapack_int ilo, lapack_int ihi, double* a, lapack_int lda, double* b, lapack_int ldb, double* q, lapack_int ldq, double* z, lapack_int ldz);
lapack_int LAPACKE_cgghrd (int matrix_layout, char compq, char compz, lapack_int n, lapack_int ilo, lapack_int ihi, lapack_complex_float* a, lapack_int lda, lapack_complex_float* b, lapack_int ldb, lapack_complex_float* q, lapack_int ldq, lapack_complex_float* z, lapack_int ldz);
lapack_int LAPACKE_zgghrd (int matrix_layout, char compq, char compz, lapack_int n, lapack_int ilo, lapack_int ihi, lapack_complex_double* a, lapack_int lda, lapack_complex_double* b, lapack_int ldb, lapack_complex_double* q, lapack_int ldq, lapack_complex_double* z, lapack_int ldz);
Include Files
- mkl.h
Description
The routine reduces a pair of real/complex matrices (A,B) to generalized upper Hessenberg form using orthogonal/unitary transformations, where A is a general matrix and B is upper triangular. The form of the generalized eigenvalue problem is A*x = λ*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 routine simultaneously reduces A to a Hessenberg matrix H:
QH*A*Z = H
and transforms B to another upper triangular matrix T:
QH*B*Z = T
in order to reduce the problem to its standard form H*y = λ*T*y, where y = ZH*x.
The orthogonal/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*Z1H = (Q1*Q)*H*(Z1*Z)H
Q1*B*Z1H = (Q1*Q)*T*(Z1*Z)H
If Q1 is the orthogonal/unitary matrix from the QR factorization of B in the original equation A*x = λ*B*x, then the routine ?gghrd reduces the original problem to generalized Hessenberg form.
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
- compq
-
Must be 'N', 'I', or 'V'.
If compq = 'N', matrix Q is not computed.
If compq = 'I', Q is initialized to the unit matrix, and the orthogonal/unitary matrix Q is returned;
If compq = 'V', Q must contain an orthogonal/unitary matrix Q1 on entry, and the product Q1*Q is returned.
- compz
-
Must be 'N', 'I', or 'V'.
If compz = 'N', matrix Z is not computed.
If compz = 'I', Z is initialized to the unit matrix, and the orthogonal/unitary matrix Z is returned;
If compz = 'V', Z must contain an orthogonal/unitary matrix Z1 on entry, and the product Z1*Z is returned.
- n
-
The order of the matrices A and B (n≥ 0).
- ilo, 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 1:ilo-1 and ihi+1:n. Values of ilo and ihi are normally set by a previous call to ggbal; otherwise they should be set to 1 and n respectively.
Constraint:
If n > 0, then 1 ≤ilo≤ihi≤n;
if n = 0, then ilo = 1 and ihi = 0.
- a, b, q, z
-
Arrays:
a (size max(1, lda*n)) contains the n-by-n general matrix A.
b (size max(1, ldb*n)) contains the n-by-n upper triangular matrix B.
q (size max(1, ldq*n))
If compq = 'N', then q is not referenced.
If compq = 'V', then q must contain the orthogonal/unitary matrix Q1, typically from the QR factorization of B.
z (size max(1, ldz*n))
If compz = 'N', then z is not referenced.
If compz = 'V', then z must contain the orthogonal/unitary matrix Z1.
- lda
-
The leading dimension of a; at least max(1, n).
- ldb
-
The leading dimension of b; at least max(1, n).
- ldq
-
The leading dimension of q;
If compq = 'N', then ldq≥ 1.
If compq = 'I'or 'V', then ldq≥ max(1, n).
- ldz
-
The leading dimension of z;
If compz = 'N', then ldz≥ 1.
If compz = 'I'or 'V', then ldz≥ max(1, n).
Output Parameters
- a
-
On exit, the upper triangle and the first subdiagonal of A are overwritten with the upper Hessenberg matrix H, and the rest is set to zero.
- b
-
On exit, overwritten by the upper triangular matrix T = QH*B*Z. The elements below the diagonal are set to zero.
- q
-
If compq = 'I', then q contains the orthogonal/unitary matrix Q, ;
If compq = 'V', then q is overwritten by the product Q1*Q.
- z
-
If compz = 'I', then z contains the orthogonal/unitary matrix Z;
If compz = 'V', then z is overwritten by the product Z1*Z.
Return Values
This function returns a value info.
If info=0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.