Representation of Orthogonal or Unitary Matrices

A real orthogonal or complex unitary matrix (usually denoted ** Q**) is often
represented in
LAPACK as a product of

Most users need not be aware of the details, because LAPACK routines are provided to work with this representation:

- routines whose names begin SORG- (real) or CUNG- (complex) can generate
all or part of
explicitly;*Q* - routines whose name begin SORM- (real) or CUNM- (complex) can multiply
a given matrix by
or*Q*without forming*Q*^{H}explicitly.*Q*

The following further details may occasionally be useful.

An elementary reflector (or elementary Householder matrix) ** H** of order

There is some redundancy in the representation (5.1), which can be
removed in
various ways. The representation used in LAPACK (which differs from
those used in LINPACK or EISPACK) sets ** v_{1} = 1**; hence

In complex arithmetic,
may be
complex, and satisfies
and
.
Thus a complex ** H** is
not Hermitian (as it is in other representations), but it is unitary,
which is the important property. The advantage of allowing
to be
complex is that, given an arbitrary complex vector

with

For further details, see Lehoucq [79].