Developer Reference

Contents

?orcsd2by1/?uncsd2by1

Computes the CS decomposition of a block-partitioned orthogonal/unitary matrix.

Syntax

lapack_int
LAPACKE_sorcsd2by1
(
int
matrix_layout
,
char
jobu1
,
char
jobu2
,
char
jobv1t
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
float
*
x11
,
lapack_int
ldx11
,
float
*
x21
,
lapack_int
ldx21
,
float
*
theta
,
float
*
u1
,
lapack_int
ldu1
,
float
*
u2
,
lapack_int
ldu2
,
float
*
v1t
,
lapack_int
ldv1t
);
lapack_int
LAPACKE_dorcsd2by1
(
int
matrix_layout
,
char
jobu1
,
char
jobu2
,
char
jobv1t
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
double
*
x11
,
lapack_int
ldx11
,
double
*
x21
,
lapack_int
ldx21
,
double
*
theta
,
double
*
u1
,
lapack_int
ldu1
,
double
*
u2
,
lapack_int
ldu2
,
double
*
v1t
,
lapack_int
ldv1t
);
lapack_int
LAPACKE_cuncsd2by1
(
int
matrix_layout
,
char
jobu1
,
char
jobu2
,
char
jobv1t
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
lapack_complex_float
*
x11
,
lapack_int
ldx11
,
lapack_complex_float
*
x21
,
lapack_int
ldx21
,
float
*
theta
,
lapack_complex_float
*
u1
,
lapack_int
ldu1
,
lapack_complex_float
*
u2
,
lapack_int
ldu2
,
lapack_complex_float
*
v1t
,
lapack_int
ldv1t
);
lapack_int
LAPACKE_zuncsd2by1
(
int
matrix_layout
,
char
jobu1
,
char
jobu2
,
char
jobv1t
,
lapack_int
m
,
lapack_int
p
,
lapack_int
q
,
lapack_complex_double
*
x11
,
lapack_int
ldx11
,
lapack_complex_double
*
x21
,
lapack_int
ldx21
,
double
*
theta
,
lapack_complex_double
*
u1
,
lapack_int
ldu1
,
lapack_complex_double
*
u2
,
lapack_int
ldu2
,
lapack_complex_double
*
v1t
,
lapack_int
ldv1t
);
Include Files
  • mkl.h
Description
The routines
?orcsd2by1
/
?uncsd2by1
compute the CS decomposition of an
m
-by-
q
matrix
X
with orthonormal columns that has been partitioned into a 2-by-1 block structure:
Equation
x
11
is
p
-by-
q
. The orthogonal/unitary matrices
u
1
,
u
2
,
v
1
, and
v
2
are
p
-by-
p
,
(m-p)
-by-
(m-p)
,
q
-by-
q
,
(m-q)
-by-
(m-q)
, respectively.
C
and
S
are
r
-by-
r
nonnegative diagonal matrices satisfying
C
2
+
S
2
=
I
, in which
r
= min(
p
,
m-p
,
q
,
m-q
)
.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major (
LAPACK_ROW_MAJOR
) or column major (
LAPACK_COL_MAJOR
).
jobu1
If equal to 'Y', then
u
1
is computed. Otherwise,
u
1
is not computed.
jobu2
If equal to 'Y', then
u
2
is computed. Otherwise,
u
2
is not computed.
jobv1t
If equal to 'Y', then
v
1
t
is computed. Otherwise,
v
1
t
is not computed.
m
The number of rows and columns of the matrix
X
.
p
The number of rows in
x
11
.
0
p
m
.
q
The number of columns in
x
11
.
0
q
m
.
x11
Array, size
(
ldx11
*
q
)
.
On entry, the part of the orthogonal matrix whose CSD is desired.
ldx11
The leading dimension of the array
x11
.
ldx11
max(1,
p
)
.
x21
Array, size
(
ldx21
*
q
)
.
On entry, the part of the orthogonal matrix whose CSD is desired.
ldx21
The leading dimension of the array
X
.
ldx21
max(1,
m
-
p
)
.
ldu1
The leading dimension of the array
u
1
. If
jobu1
= '
Y
',
ldu1
max(1,
p
)
.
ldu2
The leading dimension of the array
u
2
. If
jobu2
= '
Y
',
ldu2
max(1,
m
-
p
)
.
ldv1t
The leading dimension of the array
v1t
. If
jobv1t
= '
Y
',
ldv1t
max(1,
q
)
.
Output Parameters
theta
Array,
size
r
, in which
r
= min(
p
,
m-p
,
q
,
m-q
)
.
C
= diag( cos(
theta
(1)), ..., cos(
theta
(r)) )
, and
S
= diag( sin(
theta
(1)), ..., sin(
theta
(r)) )
.
u1
Array, size
(
ldu1
*
p
)
.
If
jobu1
= '
Y
',
u1
contains the
p
-by-
p
orthogonal/unitary matrix
u
1
.
u2
Array, size
(
ldu2
*(
m
-
p
))
.
If
jobu2
= '
Y
',
u2
contains the (
m
-
p
)-by-(
m
-
p
) orthogonal/unitary matrix
u
2
.
v1t
Array, size
(
ldv1t
*
q
)
.
If
jobv1t
= '
Y
',
v1t
contains the
q
-by-
q
orthogonal matrix
v
1
T
or unitary matrix
v
1
H
.
Return Values
This function returns a value
info
.
= 0: successful exit
< 0: if
info
= -
i
, the
i
-th argument has an illegal value
> 0:
?orcsd2by1
/
?uncsd2by1
did not converge.

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