---
name: "dgehd2"
section: "3lapack"
platform: "linux"
package: "liblapack-doc"
version: "3.2.1-8"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/dgehd2/3lapack"
---

# dgehd2(3lapack)

reduces a real general matrix A to upper Hessenberg form H by an orthogonal similarity transformation

## NAME

DGEHD2 - reduces a real general matrix A to upper Hessenberg form H by an orthogonal similarity transformation

## SYNOPSIS

- SUBROUTINE DGEHD2(

  N, ILO, IHI, A, LDA, TAU, WORK, INFO )

- INTEGER

  IHI, ILO, INFO, LDA, N

- DOUBLE

  PRECISION A( LDA, \* ), TAU( \* ), WORK( \* )

## PURPOSE

DGEHD2 reduces a real general matrix A to upper Hessenberg form H by an orthogonal similarity transformation:  Q' \* A \* Q = H .

## ARGUMENTS

- N (input) INTEGER

  The order of the matrix A.  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 DGEBAL; otherwise they should be set to 1 and N respectively. See Further Details.

- 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 upper Hessenberg matrix H, and the elements below the first subdiagonal, with the array TAU, represent the orthogonal matrix Q as a product of elementary reflectors. See Further Details. LDA     (input) INTEGER The leading dimension of the array A.  LDA \>= max(1,N).

- TAU (output) DOUBLE PRECISION array, dimension (N-1)

  The scalar factors of the elementary reflectors (see Further Details).

- WORK (workspace) DOUBLE PRECISION array, dimension (N)

  - INFO (output) INTEGER

  \= 0:  successful exit.\
   \< 0:  if INFO = -i, the i-th argument had an illegal value.

## FURTHER DETAILS

The matrix Q is represented as a product of (ihi-ilo) elementary reflectors\
\
    Q = H(ilo) H(ilo+1) . . . H(ihi-1).\
 Each H(i) has the form\
\
    H(i) = I - tau \* v \* v'\
 where tau is a real scalar, and v is a real vector with\
 v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on exit in A(i+2:ihi,i), and tau in TAU(i).\
 The contents of A are illustrated by the following example, with n = 7, ilo = 2 and ihi = 6:\
 on entry,                        on exit,\
 ( a   a   a   a   a   a   a )    (  a   a   h   h   h   h   a ) (     a   a   a   a   a   a )    (      a   h   h   h   h   a ) (     a   a   a   a   a   a )    (      h   h   h   h   h   h ) (     a   a   a   a   a   a )    (      v2  h   h   h   h   h ) (     a   a   a   a   a   a )    (      v2  v3  h   h   h   h ) (     a   a   a   a   a   a )    (      v2  v3  v4  h   h   h ) (                         a )    (                          a ) where a denotes an element of the original matrix A, h denotes a modified element of the upper Hessenberg matrix H, and vi denotes an element of the vector defining H(i).\
