Developer Reference

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

?unmhr

Multiplies an arbitrary complex matrix C by the complex unitary matrix Q determined by
?gehrd
.

Syntax

call cunmhr
(
side
,
trans
,
m
,
n
,
ilo
,
ihi
,
a
,
lda
,
tau
,
c
,
ldc
,
work
,
lwork
,
info
)
call zunmhr
(
side
,
trans
,
m
,
n
,
ilo
,
ihi
,
a
,
lda
,
tau
,
c
,
ldc
,
work
,
lwork
,
info
)
call unmhr
(
a
,
tau
,
c
[
,
ilo
]
[
,
ihi
]
[
,
side
]
[
,
trans
]
[
,
info
]
)
Include Files
  • mkl.fi
    ,
    lapack.f90
Description
The routine multiplies a matrix
C
by the unitary matrix
Q
that has been determined by a preceding call to
cgehrd
/
zgehrd
. (The routine
?gehrd
reduces a real general matrix
A
to upper Hessenberg form
H
by an orthogonal similarity transformation,
A
=
Q*H*Q
H
, and 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
.)
With
?unmhr
, you can form one of the matrix products
Q*C
,
Q
H
*C
,
C*Q
, or
C*Q
H
, overwriting the result on
C
(which may be any complex rectangular matrix). A common application of this routine is to transform a matrix
V
of eigenvectors of
H
to the matrix
QV
of eigenvectors of
A
.
Input Parameters
side
CHARACTER*1
.
Must be
'L'
or
'R'
.
If
side
=
'L'
, then the routine forms
Q*C
or
Q
H
*C
.
If
side
=
'R'
, then the routine forms
C*Q
or
C*Q
H
.
trans
CHARACTER*1
.
Must be
'N'
or
'C'
.
If
trans
=
'N'
, then
Q
is applied to
C
.
If
trans
=