Developer Reference

Contents

?orbdb/?unbdb

Simultaneously bidiagonalizes the blocks of a partitioned orthogonal/unitary matrix.

Syntax

lapack_int LAPACKE_sorbdb
(
int
matrix_layout
,
char
trans
,
char
signs
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
float*
x11
,
lapack_int
ldx11
,
float*
x12
,
lapack_int
ldx12
,
float*
x21
,
lapack_int
ldx21
,
float*
x22
,
lapack_int
ldx22
,
float*
theta
,
float*
phi
,
float*
taup1
,
float*
taup2
,
float*
tauq1
,
float*
tauq2
);
lapack_int LAPACKE_dorbdb
(
int
matrix_layout
,
char
trans
,
char
signs
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
double*
x11
,
lapack_int
ldx11
,
double*
x12
,
lapack_int
ldx12
,
double*
x21
,
lapack_int
ldx21
,
double*
x22
,
lapack_int
ldx22
,
double*
theta
,
double*
phi
,
double*
taup1
,
double*
taup2
,
double*
tauq1
,
double*
tauq
);
lapack_int LAPACKE_cunbdb
(
int
matrix_layout
,
char
trans
,
char
signs
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
lapack_complex_float*
x11
,
lapack_int
ldx11
,
lapack_complex_float*
x12
,
lapack_int
ldx12
,
lapack_complex_float*
x21
,
lapack_int
ldx21
,
lapack_complex_float*
x22
,
lapack_int
ldx22
,
float*
theta
,
float*
phi
,
lapack_complex_float*
taup1
,
lapack_complex_float*
taup2
,
lapack_complex_float*
tauq1
,
lapack_complex_float*
tauq2
);
lapack_int LAPACKE_zunbdb
(
int
matrix_layout
,
char
trans
,
char
signs
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
lapack_complex_double*
x11
,
lapack_int
ldx11
,
lapack_complex_double*
x12
,
lapack_int
ldx12
,
lapack_complex_double*
x21
,
lapack_int
ldx21
,
lapack_complex_double*
x22
,
lapack_int
ldx22
,
double*
theta
,
double*
phi
,
lapack_complex_double*
taup1
,
lapack_complex_double*
taup2
,
lapack_complex_double*
tauq1
,
lapack_complex_double*
tauq2
);
Include Files
  • mkl.h
Description
The routines
?orbdb
/
?unbdb
simultaneously bidiagonalizes the blocks of an
m
-by-
m
partitioned orthogonal matrix
X
:
Equation
or unitary matrix:
Equation
x
11
is
p
-by-
q
.
q
must not be larger than
p
,
m
-
p
, or
m
-
q
. Otherwise,
x
must be transposed and/or permuted in constant time using the
trans
and
signs
options.
The orthogonal/unitary matrices
p
1
,
p
2
,
q
1
, and
q
2
are
p
-by-
p
,
(m-p)
-by-
(m-p)
,
q
-by-
q
,
(m-q)
-by-
(m-q)
, respectively. They are represented implicitly by Housholder vectors.
The bidiagonal matrices
b
11
,
b
12
,
b
21
, and
b
22
are
q
-by-
q
bidiagonal matrices represented implicitly by angles
theta
[0]
, ...,
theta
[
q
- 1]
and
phi
[0]
, ...,
phi
[
q
- 2]
.
b
11
and
b
12
are upper bidiagonal, while
b
21
and
b
22
are lower bidiagonal. Every entry in each bidiagonal band is a product of a sine or cosine of
theta
with a sine or cosine of
phi
. See [Sutton09] for details.
p
1
,
p
2
,
q
1
, and
q
2
are represented as products of elementary reflectors. .
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
trans
= '
T
':
x
,
u
1
,
u
2
,
v
1
t
,
v
2
t
are stored in row-major order.
otherwise
x
,
u
1
,
u
2
,
v
1
t
,
v
2
t
are stored in column-major order.
signs
= '
O
':
The lower-left block is made nonpositive (the "other" convention).
otherwise
The upper-right block is made nonpositive (the "default" convention).
m
The number of rows and columns of the matrix
X
.
p
The number of rows in
x
11
and
x
12
.
0
p
m
.
q
The number of columns in
x
11
and
x
21
.
0
q
min(
p
,
m
-
p
,
m
-
q
)
.
x11
Array, size
(size max(1,
ldx11
*
q
) for column major layout and max(1,
ldx11
*
p
) for row major layout)
.
On entry, the top-left block of the orthogonal/unitary matrix to be reduced.
ldx11
The leading dimension of the array
X
11
. If
trans
= '
T
',
ldx11
p
for column major layout and
ldx11
q
for row major layout
. Otherwise,
ldx11
q
.
x12
Array, size
(size max(1,
ldx12
*(
m
-
q
)) for column major layout and max(1,
ldx12
*
p
) for row major layout)
.
On entry, the top-right block of the orthogonal/unitary matrix to be reduced.
ldx12
The leading dimension of the array
X
12
. If
trans
= '
N
',
ldx12
p
for column major layout and
ldx12
m
-
q
for row major layout.
. Otherwise,
ldx12
m
-
q
.
x21
Array, size
(size max(1,
ldx21
*
q
) for column major layout and max(1,
ldx21
*(
m
-
p
)) for row major layout)
.
On entry, the bottom-left block of the orthogonal/unitary matrix to be reduced.
ldx21
The leading dimension of the array
X
21
. If
trans
= '
N
',
ldx21
m
-
p
for column major layout and
ldx12
q
for row major layout.
. Otherwise,
ldx21
q
.
x22
Array, size (
(size max(1,
ldx22
*(
m
-
q
)) for column major layout and max(1,
ldx22
*(
m
-
p
)) for row major layout)
.
On entry, the bottom-right block of the orthogonal/unitary matrix to be reduced.
ldx22
The leading dimension of the array
X
21
. If
trans
= '
N
',
ldx22
m
-
p
for column major layout and
ldx22
m
-
q
for row major layout.
. Otherwise,
ldx22
m
-
q
.
Output Parameters
x11
On exit, the form depends on
trans
:
If
trans
='
N
',
the columns of the lower triangle of
x11
specify reflectors for
p
1
, the rows of the upper triangle of
x11
(1:
q
- 1,
q
:q - 1)
specify reflectors for
q
1
otherwise
trans
='
T
',
the rows of the upper triangle of
x11
specify reflectors for
p
1
, the columns of the lower triangle of
x11
(1:
q
- 1,
q
:q - 1)
specify reflectors for
q
1
x12
On exit, the form depends on
trans
:
If
trans
='
N
',
the columns of the upper triangle of
x12
specify the first
p
reflectors for
q
2
otherwise
trans
='
T
',
the columns of the lower triangle of
x12
specify the first
p
reflectors for
q
2
x21
On exit, the form depends on
trans
:
If
trans
='
N
',
the columns of the lower triangle of
x21
specify the reflectors for
p
2
otherwise
trans
='
T
',
the columns of the upper triangle of
x21
specify the reflectors for
p
2
x22
On exit, the form depends on
trans
:
If
trans
='
N
',
the rows of the upper triangle of
x22
(
q
+1:
m
-
p
,
p
+1:
m
-
q
) specify the last
m
-
p
-
q
reflectors for
q
2
otherwise
trans
='
T
',
the columns of the lower triangle of
x22
(
p
+1:
m
-
q
,
q
+1:
m
-
p
) specify the last
m
-
p
-
q
reflectors for
p
2
theta
Array,
size
q
. The entries of bidiagonal blocks
b
11
,
b
12
,
b
21
, and
b
22
can be computed from the angles
theta
and
phi
.
See the Description section for details.
phi
Array,
size
q
-1
. The entries of bidiagonal blocks
b
11
,
b
12
,
b
21
, and
b
22
can be computed from the angles
theta
and
phi
.
See the Description section for details.
taup1
Array,
size
p
.
Scalar factors of the elementary reflectors that define
p
1
.
taup2
Array,
size
m
-
p
.
Scalar factors of the elementary reflectors that define
p
2
.
tauq1
Array,
size
q
.
Scalar factors of the elementary reflectors that define
q
1
.
tauq2
Array,
size
m
-
q
.
Scalar factors of the elementary reflectors that define
q
2
.
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.

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