Developer Reference

  • 0.10
  • 10/21/2020
  • Public Content
Contents

?ungbr

Generates the complex unitary matrix Q or
P
H
determined by
?gebrd
.

Syntax

lapack_int
LAPACKE_cungbr
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_complex_float
*
a
,
lapack_int
lda
,
const
lapack_complex_float
*
tau
);
lapack_int
LAPACKE_zungbr
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
lapack_complex_double
*
a
,
lapack_int
lda
,
const
lapack_complex_double
*
tau
);
Include Files
  • mkl.h
Description
The routine generates the whole or part of the unitary matrices
Q
and
P
H
formed by the routines gebrd. Use this routine after a call to
cgebrd
/
zgebrd
. All valid combinations of arguments are described in
Input Parameters
; in most cases you need the following:
To compute the whole
m
-by-
m
matrix
Q
, use:
LAPACKE_?ungbr(matrix_layout, 'Q', m, m, n, a, lda, tau)
(note that the
array
a
must have at least
m
columns).
To form the
n
leading columns of
Q
if
m
>
n
, use:
LAPACKE_?ungbr(matrix_layout, 'Q', m, n, n, a, lda, tau)
To compute the whole
n
-by-
n
matrix
P
H
, use:
LAPACKE_?ungbr(matrix_layout, 'P', n, n, m, a, lda, tau)
(note that the array
a
must have at least
n
rows).
To form the
m
leading rows of
P
H
if
m
<
n
, use:
LAPACKE_?ungbr(matrix_layout, 'P', m, m, n, a, lda, tau)
Input Parameters
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'
, the routine generates the matrix
Q
.
If
vect
=
'P'
, the routine generates the matrix
P
H
.
m
The number of required rows of
Q
or
P
H
.
n
The number of required columns of
Q
or
P
H
.
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
.
For
vect
=
'Q'
:
k
n
m
if
m
>
k
, or
m
=
n
if
m
k
.
For
vect
=
'P'
:
k
m
n
if
n
>
k
, or
m
=
n
if
n
k
.
a
Arrays:
a
, size at least
lda
*
n
for column major layout and
lda
*
m
for row major layout,
is the array
a
as returned by
?gebrd
.
lda
The leading dimension of
a
; at least max(1,
m
)
for column major layout and max(1,
n
) for row major layout
.
tau
For
vect
=
'Q'
, the array
tauq
as returned by
?gebrd
. For
vect
=
'P'
, the array
taup
as returned by
?gebrd
.
The dimension of
tau
must be at least max(1, min(
m
,
k
)) for
vect
=
'Q'
, or max(1, min(
m
,
k
)) for
vect
=
'P'
.
Output Parameters
a
Overwritten by the orthogonal matrix
Q
or
P
T
(or the leading rows or columns thereof) as specified by
vect
,
m
, and
n
.
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 matrix
Q
differs from an exactly orthogonal matrix by a matrix
E
such that
||
E
||
2
=
O
(
ε
)
.
The approximate numbers of possible floating-point operations are listed below:
To compute the whole matrix
Q
:
(16/3)
n
(3
m
2
- 3
m
*
n
+
n
2
)
if
m
>
n
;
(16/3)
m
3
if
m
n
.
To form the
n
leading columns of
Q
when
m
>
n
:
(8/3)
n
2
(3
m
-
n
2
)
.
To compute the whole matrix
P
H
:
(16/3)
n
3
if
m
n
;
(16/3)
m
(3
n
2
- 3
m
*
n
+
m
2
)
if
m
<
n
.
To form the
m
leading columns of
P
H
when
m
<
n
:
(8/3)
n
2
(3
m
-
n
2
)
if
m
>
n
.
The real counterpart of this routine is orgbr.

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