Visible to Intel only — GUID: GUID-B0D954D3-95F7-4081-9496-86A79506C2BE
Visible to Intel only — GUID: GUID-B0D954D3-95F7-4081-9496-86A79506C2BE
?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:
x11 is p-by-q. The orthogonal/unitary matrices u1, u2, v1, and v2 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 C2 + S2 = 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 u1 is computed. Otherwise, u1 is not computed.
- jobu2
-
If equal to 'Y', then u2 is computed. Otherwise, u2 is not computed.
- jobv1t
-
If equal to 'Y', then v1t is computed. Otherwise, v1t is not computed.
- m
-
The number of rows and columns of the matrix X.
- p
-
The number of rows in x11. 0 ≤p≤m.
- q
-
The number of columns in x11 . 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 u1. If jobu1 = 'Y', ldu1≥ max(1,p).
- ldu2
-
The leading dimension of the array u2. 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 u1.
- u2
-
Array, size (ldu2*(m - p)) .
If jobu2 = 'Y', u2 contains the (m-p)-by-(m-p) orthogonal/unitary matrix u2.
- v1t
-
Array, size (ldv1t*q) .
If jobv1t = 'Y', v1t contains the q-by-q orthogonal matrix v1T or unitary matrix v1H.
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.