DGGHRD(l)		LAPACK routine (version	1.1)		    DGGHRD(l)

NAME
  DGGHRD - reduce a pair of real matrices (A,B)	to generalized upper Hessen-
  berg form using orthogonal similarity	transformations, where A is a (gen-
  erally non-symmetric)	square matrix and B is upper triangular

SYNOPSIS

  SUBROUTINE DGGHRD( 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

      DOUBLE	     PRECISION A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z( LDZ,
		     * )

PURPOSE
  DGGHRD reduces a pair	of real	matrices (A,B) to generalized upper Hessen-
  berg form using orthogonal similarity	transformations, where A is a (gen-
  erally non-symmetric)	square matrix and B is upper triangular.  More pre-
  cisely, DGGHRD 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
  orthogonal, and ' means transpose.

  If COMPQ and COMPZ are 'V' or	'I', then the orthogonal
  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)'

  DGGHRD 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) DOUBLE	PRECISION 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) DOUBLE	PRECISION array, dimension (LDB, N)
	  On entry, the	N-by-N upper triangular	matrix B.  On exit, the
	  transformed matrix T = Q' B Z, which is upper	triangular.

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

  Q	  (input/output) DOUBLE	PRECISION array, dimension (LDQ, N)
	  If COMPQ='N',	then Q will not	be referenced.	If COMPQ='V', then
	  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) DOUBLE	PRECISION 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