ZGGHRD(l)		LAPACK routine (version	1.1)		    ZGGHRD(l)

NAME
  ZGGHRD - reduce a pair of complex matrices (A,B) to generalized 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 generalized 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 triangular, Q and Z are uni-
  tary,	and * means conjugate transpose.

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

  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	tri-
	  angular 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 subdiagonal 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 overwritten 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).


Back to the listing of computational routines for eigenvalue problems