?gehd2

Reduces a general square matrix to upper Hessenberg form using an unblocked algorithm.

Syntax

call sgehd2( n, ilo, ihi, a, lda, tau, work, info )

call dgehd2( n, ilo, ihi, a, lda, tau, work, info )

call cgehd2( n, ilo, ihi, a, lda, tau, work, info )

call zgehd2( n, ilo, ihi, a, lda, tau, work, info )

Include Files

  • mkl.fi

Description

The routine reduces a real/complex general matrix A to upper Hessenberg form H by an orthogonal or unitary similarity transformation QT*A*Q = H (for real flavors) or QH*A*Q = H (for complex flavors).

The routine does not form the matrix Q explicitly. Instead, Q is represented as a product of elementary reflectors.

Input Parameters

n

INTEGER The order of the matrix A (n 0).

ilo, ihi

INTEGER. It is assumed that A is already upper triangular in rows and columns 1:ilo -1 and ihi+1:n.

If A has been output by ?gebal, then

ilo and ihi must contain the values returned by that routine. Otherwise they should be set to ilo = 1 and ihi = n. Constraint: 1 ≤ iloihi ≤ max(1, n).

a, work

REAL for sgehd2

DOUBLE PRECISION for dgehd2

COMPLEX for cgehd2

DOUBLE COMPLEX for zgehd2.

Arrays:

a (lda,*) contains the n-by-n matrix A to be reduced. The second dimension of a must be at least max(1, n).

work (n) is a workspace array.

lda

INTEGER. The leading dimension of a; at least max(1, n).

Output Parameters

a

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/unitary matrix Q as a product of elementary reflectors. See Application Notes below.

tau

REAL for sgehd2

DOUBLE PRECISION for dgehd2

COMPLEX for cgehd2

DOUBLE COMPLEX for zgehd2.

Array, DIMENSION at least max (1, n-1).

Contains the scalar factors of elementary reflectors. See Application Notes below.

info

INTEGER.

If info = 0, the execution is successful.

If info = -i, the i-th parameter had an illegal value.

Application Notes

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*vT for real flavors, or

H(i) = I - tau*v*vH for complex flavors

where tau is a real/complex scalar, and v is a real/complex vector with v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0.

On exit, v(i+2:ihi) is stored 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:


Equation

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

Per informazioni più dettagliate sulle ottimizzazioni basate su compilatore, vedere il nostro Avviso sull'ottimizzazione.