## Developer Reference

• 2020.2
• 07/15/2020
• Public Content
Contents

# ?unghr

Generates the complex unitary matrix Q determined by
?gehrd
.

## Syntax

Include Files
• mkl.fi
,
lapack.f90
Description
The routine is intended to be used following a call to
cgehrd
/
zgehrd
, which reduces a complex matrix
A
to upper Hessenberg form
H
by a unitary similarity transformation:
A
=
Q*H*Q
H
.
?gehrd
represents the matrix
Q
as a product of
ihi
-
ilo
elementary reflectors. Here
ilo
and
ihi
are values determined by
cgebal
/
zgebal
when balancing the matrix; if the matrix has not been balanced,
ilo
= 1
and
ihi
=
n
.
Use the routine unghr to generate
Q
explicitly as a square matrix. The matrix
Q
has the structure: where
Q
22
occupies rows and columns
ilo
to
ihi
.
Input Parameters
n
INTEGER
.
The order of the matrix
Q
(
n
0
).
ilo
,
ihi
INTEGER
.
These must be the same parameters
ilo
and
ihi
, respectively, as supplied to
?gehrd
. (If
n
> 0
, then
1
ilo
ihi
n
. If
n
= 0, then
ilo
= 1
and
ihi
= 0
.)
a
,
tau
,
work
COMPLEX
for
cunghr
DOUBLE COMPLEX
for
zunghr
.
Arrays:
a
(
lda
,*)
contains details of the vectors which define the elementary reflectors, as returned by
?gehrd
.
The second dimension of
a
must be at least max(1,
n
).
tau
(*)
contains further details of the elementary reflectors, as returned by
?gehrd
.
The dimension of
tau
must be at least max (1,
n
-1).
work
is a workspace array, its dimension
max(1,
lwork
)
.
lda
INTEGER
.
a
; at least max(1,
n
).
lwork
INTEGER
.
The size of the
work
array;
lwork
max(1,
ihi
-
ilo
).
If
lwork
= -1
, then a workspace query is assumed; the routine only calculates the optimal size of the
work
array, returns this value as the first entry of the
work
array, and no error message related to
lwork
is issued by xerbla.
See
Application Notes
for the suggested value of
lwork
.