Contents

?unmbr

Multiplies an arbitrary complex matrix by the unitary matrix
Q
or
P
determined by
?gebrd
.

Syntax

Include Files
• mkl.h
Description
Given an arbitrary complex matrix
C
, this routine forms one of the matrix products
Q*C
,
Q
H
*C
,
C*Q
,
C*Q
H
,
P*C
,
P
H
*C
,
C*P
, or
C*P
H
, where
Q
and
P
are unitary matrices computed by a call to gebrd/gebrd. The routine overwrites the product on
C
.
Input Parameters
In the descriptions below,
r
denotes the order of
Q
or
P
H
:
If
side
=
'L'
,
r
=
m
; if
side
=
'R'
,
r
=
n
.
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
vect
Must be
'Q'
or
'P'
.
If
vect
=
'Q'
, then
Q
or
Q
H
is applied to
C
.
If
vect
=
'P'
, then
P
or
P
H
is applied to
C
.
side
Must be
'L'
or
'R'
.
If
side
=
'L'
, multipliers are applied to
C
from the left.
If
side
=
'R'
, they are applied to
C
from the right.
trans
Must be
'N'
or
'C'
.
If
trans
=
'N'
, then
Q
or
P
is applied to
C
.
If
trans
=
'C'
, then
Q
H
or
P
H
is applied to
C
.
m
The number of rows in
C
.
n
The number of columns in
C
.
k
One of the dimensions of
A
in
?gebrd
:
If
vect
=
'Q'
, the number of columns in
A
;
If
vect
=
'P'
, the number of rows in
A
.
Constraints:
m
0
,
n
0
,
k
0
.
a
,
c
Arrays:
a
is the array
a
as returned by
?gebrd
.
The size of
a
depends on the value of the
matrix_layout
,
vect
, and
side
parameters:
matrix_layout
vect
side
size
column major
'Q'
-
max(1,
lda
*
k
)
column major
'P'
'L'
max(1,
lda
*
m
)
column major
'P'
'R'
max(1,
lda
*
n
)
row major
'Q'
'L'
max(1,
lda
*
m
)
row major
'Q'
'R'
max(1,
lda
*
n
)
row major
'P'
-
max(1,
lda
*
k
)
c
(size max(1,
ldc
*
n
) for column major layout and max(1,
ldc
*
m
for row major layout)
holds the matrix
C
.
lda
The leading dimension of
a
. Constraints:
lda
max(1,
r
)
for column major layout and at least max(1,
k
) for row major layout
if
vect
=
'Q'
;
lda
max(1, min(
r
,
k
))
for column major layout and at least max(1,
r
) for row major layout
if
vect
=
'P'
.
ldc
The leading dimension of
c
;
ldc
max(1,
m
)
.
tau
Array, size at least max (1, min(
r
,
k
)).
For
vect
=
'Q'
, the array
tauq
as returned by
?gebrd
. For
vect
=
'P'
, the array
taup
as returned by
?gebrd
.
Output Parameters
c
Overwritten by the product
Q*C
,
Q
H
*C
,
C*Q
,
C*Q
H
,
P*C
,
P
H
*C
,
C*P
, or
C*P
H
, as specified by
vect
,
side
, and
trans
.
Return Values
This function returns a value
info
.
If
info
=0
, the execution is successful.
If
info
=
-i
, the
i
-th parameter had an illegal value.
Application Notes
The computed product differs from the exact product by a matrix
E
such that
||
E
||
2
=
O
(
ε
)*||
C
||
2
.
The total number of floating-point operations is approximately
8*
n
*
k
(2*
m
-
k
)
if
side
=
'L'
and
m
k
;
8*
m
*
k
(2*
n
-
k
)
if
side
=
'R'
and
n
k
;
8*
m
2
*
n
if
side
=
'L'
and
m
<
k
;
8*
n
2
*
m
if
side
=
'R'
and
n
<
k
.
The real counterpart of this routine is ormbr.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804