Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

?orgbr

Generates the real orthogonal matrix
Q
or
P
T
determined by
?gebrd
.

Syntax

lapack_int
LAPACKE_sorgbr
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
float
*
a
,
lapack_int
lda
,
const
float
*
tau
);
lapack_int
LAPACKE_dorgbr
(
int
matrix_layout
,
char
vect
,
lapack_int
m
,
lapack_int
n
,
lapack_int
k
,
double
*
a
,
lapack_int
lda
,
const
double
*
tau
);
Include Files
  • mkl.h
Description
The routine generates the whole or part of the orthogonal matrices
Q
and
P
T
formed by the routines
gebrd
. Use this routine after a call to
sgebrd
/
dgebrd
. 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
:
LAPACKE_?orgbr(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
:
LAPACKE_?orgbr(matrix_layout, 'Q', m, n, n, a, lda, tau )
To compute the whole
n
-by-
n
matrix
P
T
:
LAPACKE_?orgbr(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
T
if
m
<
n
:
LAPACKE_?orgbr(matrix_layout, 'P', m, n, m, 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
T
.
m, n
The number of rows (
m
) and columns (
n
) in the matrix
Q
or
P
T
to be returned (
m
0
,
n
0
).
If
vect
=
'Q'
,
m
n
≥ min(
m
,
k
)
.
If
vect
=
'P'
,
n
m
≥ min(
n
,
k
)
.
k
If
vect
=
'Q'
, the number of columns in the original
m
-by-
k
matrix reduced by gebrd.
If
vect
=
'P'
, the number of rows in the original
k
-by-
n
matrix reduced by gebrd.
a
Array, size at least
lda
*
n
for column major layout and
lda
*
m
for row major layout.
The vectors which define the elementary reflectors, as returned by gebrd.
lda
The leading dimension of the array
a
.
lda
≥ max(
1
,
m
)
for column major layout and at least max(1,
n
) for row major layout
.
tau
Array, size
min (
m
,
k
) if
vect
=
'Q'
,
min (
n
,
k
) if
vect
=
'P'
. Scalar factor of the elementary reflector
H
(
i
) or
G
(
i
), which determines
Q
and
P
T
as returned by
gebrd
in the array
tauq
or
taup
.
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 floating-point operations for the cases listed in
Description
are as follows:
To form the whole of
Q
:
(4/3)*
n
*(3
m
2
- 3
m
*
n
+
n
2
)
if
m
>
n
;
(4/3)*
m
3
if
m
n
.
To form the
n
leading columns of
Q
when
m
>
n
:
(2/3)*
n
2
*(3
m
-
n
)
if
m
>
n
.
To form the whole of
P
T
:
(4/3)*
n
3
if
m
n
;
(4/3)*
m
*(3
n
2
- 3
m
*
n
+
m
2
)
if
m
<
n
.
To form the
m
leading columns of
P
T
when
m
<
n
:
(2/3)*
n
2
*(3
m
-
n
)
if
m
>
n
.
The complex counterpart of this routine is ungbr.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.