cgghrd(3S)

CGGHRD - reduce 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

As shipped in IRIX 6.5.15. Added in IRIX 6.5.15.

NAME
     CGGHRD - reduce 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

SYNOPSIS
     SUBROUTINE CGGHRD( 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        A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z( LDZ, * )

IMPLEMENTATION
     These routines are part of the SCSL Scientific Library and can be loaded
     using either the -lscs or the -lscs_mp option.  The -lscs_mp option
     directs the linker to use the multi-processor version of the library.

     When linking to SCSL with -lscs or -lscs_mp, the default integer size is
     4 bytes (32 bits). Another version of SCSL is available in which integers
     are 8 bytes (64 bits).  This version allows the user access to larger
     memory sizes and helps when porting legacy Cray codes.  It can be loaded
     by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
     only one of the two versions; 4-byte integer and 8-byte integer library
     calls cannot be mixed.

PURPOSE
     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: Q' * A * Z = H and Q' * B * Z = T,
     where H is upper Hessenberg, T is upper triangular, and Q and Z are
     unitary, and ' means conjugate transpose.

     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' = (Q1*Q) * H * (Z1*Z)'
          Q1 * B * Z1' = (Q1*Q) * T * (Z1*Z)'


ARGUMENTS
     COMPQ   (input) CHARACTER*1
             = 'N': do not compute Q;
             = 'I': Q is initialized to the unit matrix, and the unitary
             matrix Q is returned; = 'V': Q must contain a unitary matrix Q1
             on entry, and the product Q1*Q is returned.

     COMPZ   (input) CHARACTER*1
             = 'N': do not compute Q;
             = 'I': Q is initialized to the unit matrix, and the unitary
             matrix Q is returned; = 'V': Q must contain a unitary matrix Q1
             on entry, and the product Q1*Q is returned.

     N       (input) INTEGER
             The order of the matrices A and B.  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 and IHI
             are normally set by a previous call to CGGBAL; otherwise they
             should be set to 1 and N respectively.  1 <= ILO <= IHI <= N, if
             N > 0; ILO=1 and IHI=0, if N=0.

     A       (input/output) COMPLEX array, dimension (LDA, N)
             On entry, the N-by-N general matrix to be reduced.  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.

     LDA     (input) INTEGER
             The leading dimension of the array A.  LDA >= max(1,N).

     B       (input/output) COMPLEX 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 elements 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 array, dimension (LDQ, N)
             If COMPQ='N':  Q is not referenced.
             If COMPQ='I':  on entry, Q need not be set, and on exit it
             contains the unitary matrix Q, where Q' is the product of the
             Givens transformations which are applied to A and B on the left.
             If COMPQ='V':  on entry, Q must contain a unitary matrix Q1, and
             on exit this is overwritten by Q1*Q.

     LDQ     (input) INTEGER
             The leading dimension of the array Q.  LDQ >= N if COMPQ='V' or
             'I'; LDQ >= 1 otherwise.

     Z       (input/output) COMPLEX array, dimension (LDZ, N)
             If COMPZ='N':  Z is not referenced.
             If COMPZ='I':  on entry, Z need not be set, and on exit it
             contains the unitary matrix Z, which is the product of the Givens
             transformations which are applied to A and B on the right.  If
             COMPZ='V':  on entry, Z must contain a unitary matrix Z1, and on
             exit this is overwritten by Z1*Z.
     LDZ     (input) INTEGER
             The leading dimension of the array Z.  LDZ >= N if COMPZ='V' or
             'I'; LDZ >= 1 otherwise.

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


SEE ALSO
     INTRO_LAPACK(3S), INTRO_SCSL(3S)

     This man page is available only online.