Previous: zggglm Up: ../lapack-z.html Next: zgglse


zgghrd


 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).