-
template<typename T>
void gehd2(integer *n, integer *ilo, integer *ihi, T *a, integer *lda, T *tau, T *work, integer *info)# Reduction to upper Hessenberg form using an unblocked algorithm.
Purpose:
Reduction of a real general matrix a to upper Hessenberg form H by an orthogonal similarity transformation: Q**T * A * Q = H .
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**T 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, vi denotes an element of the vector defining H(i).
- Parameters:
n – [in]
n is integer*
The order of the matrix a. n >= 0.
ilo – [in] ilo is integer*
ihi – [in]
ihi is 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 SGEBAL; otherwise they should be set to 1 and N respectively. See Further Details.
1 <= ilo <= ihi <= fla_max(1,n).
a – [inout]
a is float/double/COMPLEX/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 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 – [in]
lda is integer*
The leading dimension of the array a. lda >= fla_max(1,n).
tau – [out]
tau is float/double/COMPLEX/COMPLEX*16 array, dimension (n-1)
The scalar factors of the elementary reflectors (see Further Details).
WORK – [out] WORK is COMPLEX array, dimension (N)
INFO – [out]
INFO is INTEGER
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value.