Previous: zggglm Up: ../lapack-z.html Next: zgglse
NAME
ZGGHRD - reduce a pair of complex matrices (A,B) to general-
ized upper Hessenberg form using unitary similarity
transformations, where A is a (generally non-symmetric)
square matrix and B is upper triangular
SYNOPSIS
SUBROUTINE ZGGHRD( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B,
LDB, Q, LDQ, Z, LDZ, INFO )
CHARACTER COMPQ, COMPZ
INTEGER IHI, ILO, INFO, LDA, LDB, LDQ, LDZ, N
COMPLEX*16 A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z(
LDZ, * )
PURPOSE
ZGGHRD reduces a pair of complex matrices (A,B) to general-
ized upper Hessenberg form using unitary similarity
transformations, where A is a (generally non-symmetric)
square matrix and B is upper triangular. More precisely,
ZGGHRD simultaneously decomposes A into Q H Z* and B
into Q T Z* , where H is upper Hessenberg, T is upper tri-
angular, Q and Z are unitary, and * means conjugate tran-
spose.
If COMPQ and COMPZ are 'V' or 'I', then the unitary
transformations used to reduce (A,B) are accumulated into
the arrays Q and Z s.t.:
Q(in) A(in) Z(in)* = Q(out) A(out) Z(out)*
Q(in) B(in) Z(in)* = Q(out) B(out) Z(out)*
ZGGHRD implements an unblocked form of the method, there
being no blocked form known at this time.
ARGUMENTS
COMPQ (input) CHARACTER*1
= 'N': do not compute Q;
= 'V': accumulate the row transformations into Q;
= 'I': overwrite the array Q with the row transfor-
mations.
COMPZ (input) CHARACTER*1
= 'N': do not compute Z;
= 'V': accumulate the column transformations into Z;
= 'I': overwrite the array Z with the column
transformations.
N (input) INTEGER
The number of rows and columns in the matrices A, B,
Q, and Z. N >= 0.
ILO (input) INTEGER
IHI (input) INTEGER It is assumed that A is
already upper triangular in rows and columns 1:ILO-1
and IHI+1:N. ILO >= 1 and IHI <= N.
A (input/output) COMPLEX*16 array, dimension (LDA, N)
On entry, the N-by-N general matrix to be reduced.
On exit, the upper triangle and the first subdiago-
nal of A are overwritten with the Hessenberg matrix
H, and the rest is set to zero.
LDA (input) INTEGER
The leading dimension of the array A. LDA >= max(
1, N ).
B (input/output) COMPLEX*16 array, dimension (LDB, N)
On entry, the N-by-N upper triangular matrix B. On
exit, the upper triangular matrix T = Q* B Z. The
entries below the diagonal are set to zero.
LDB (input) INTEGER
The leading dimension of the array B. LDB >= max(
1, N ).
Q (input/output) COMPLEX*16 array, dimension (LDQ, N)
If COMPQ='N', then Q will not be referenced. If
COMPQ='V', then the conjugate transpose of the
Givens transformations which are applied to A and B
on the left will be applied to the array Q on the
right. If COMPQ='I', then Q will first be overwrit-
ten with an identity matrix, and then the Givens
transformations will be applied to Q as in the case
COMPQ='V'.
LDQ (input) INTEGER
The leading dimension of the array Q. LDQ >= 1. If
COMPQ='V' or 'I', then LDQ >= N.
Z (input/output) COMPLEX*16 array, dimension (LDZ, N)
If COMPZ='N', then Z will not be referenced. If
COMPZ='V', then the Givens transformations which are
applied to A and B on the right will be applied to
the array Z on the right. If COMPZ='I', then Z will
first be overwritten with an identity matrix, and
then the Givens transformations will be applied to Z
as in the case COMPZ='V'.
LDZ (input) INTEGER
The leading dimension of the array Z. LDZ >= 1. If
COMPZ='V' or 'I', then LDZ >= N.
INFO (output) INTEGER
= 0: successful exit.
< 0: if INFO = -i, the i-th argument had an illegal
value.
FURTHER DETAILS
This routine reduces A to Hessenberg and B to triangular
form by an unblocked reduction, as described in
_Matrix_Computations_, by Golub and van Loan (Johns Hopkins
Press).