Visible to Intel only — GUID: GUID-EE34BCD2-C18C-400B-8A28-31788E84C94E
Visible to Intel only — GUID: GUID-EE34BCD2-C18C-400B-8A28-31788E84C94E
?orbdb2/?unbdb2
Simultaneously bidiagonalizes the blocks of a tall and skinny matrix with orthonormal columns.
Syntax
call sorbdb2( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )
call dorbdb2( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )
call cunbdb2( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )
call zunbdb2( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )
Include Files
- mkl.fi, lapack.f90
Description
The routines ?orbdb2/?unbdb2 simultaneously bidiagonalize the blocks of a tall and skinny matrix X with orthonormal columns:
The size of x11 is p by q, and x12 is (m - p) by q. q must not be larger than p, m-p, or m-q.
q≤ min(p, m - p, m - q) |
?orbdb1/?unbdb1 |
p≤ min(q, m - p, m - q) |
?orbdb2/?unbdb2 |
m - p≤ min(p, q, m - q) |
?orbdb3/?unbdb3 |
m - q≤ min(p, q, m - p) |
?orbdb4/?unbdb4 |
The orthogonal/unitary matrices p1, p2, and q1 are p-by-p, (m-p)-by-(m-p), (m-q)-by-(m-q), respectively.
p1, p2, and q1 are represented as products of elementary reflectors. See the description of ?orcsd2by1/?uncsd2by1 for details on generating p1, p2, and q1 using ?orgqr and ?orglq.
The upper-bidiagonal matrices b11 and b12 of size p by p are represented implicitly by angles theta(1), ..., theta(q) and phi(1), ..., phi(q-1). 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] or the description of ?orcsd/?uncsd for details.
Input Parameters
- m
-
INTEGER. The number of rows in x11 plus the number of rows in x21.
- p
-
INTEGER. The number of rows in x11. 0 ≤p≤ min(q,m-p,m-q).
- q
-
INTEGER. The number of columns in x11 and x21. 0 ≤q≤m.
- x11
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (ldx11,q).
On entry, the top block of the orthogonal/unitary matrix to be reduced.
- ldx11
-
INTEGER. The leading dimension of the array X11. ldx11≥p.
- x21
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (ldx21,q).
On entry, the bottom block of the orthogonal/unitary matrix to be reduced.
- ldx21
-
INTEGER. The leading dimension of the array X21. ldx21≥m-p.
- work
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Workspace array, DIMENSION (lwork).
- lwork
-
INTEGER. The size of the work array. lwork≥m-q
If lwork = -1, then a workspace query is assumed; the routine only calculates the optimal size of the work array, returns this value as the first entry of the work array, and no error message related to lwork is issued by xerbla.
Output Parameters
- x11
-
On exit: the columns of tril(x11) specify reflectors for p1 and the rows of triu(x11,1) specify reflectors for q1.
- x21
-
On exit, the columns of tril(x21) specify the reflectors for p2
- theta
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (q). The entries of bidiagonal blocks b11 and b21 can be computed from the angles theta and phi. See the Description section for details.
- phi
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (q-1). The entries of bidiagonal blocks b11 and b21 can be computed from the angles theta and phi. See the Description section for details.
- taup1
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (p).
Scalar factors of the elementary reflectors that define p1. - taup2
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (m-p).
Scalar factors of the elementary reflectors that define p2. - tauq1
-
REAL for sorbdb2
DOUBLE PRECISION for dorbdb2
COMPLEX for cunbdb2
DOUBLE COMPLEX for zunbdb2
Array, DIMENSION (q).
Scalar factors of the elementary reflectors that define q1. - info
-
INTEGER.
= 0: successful exit
< 0: if info = -i, the i-th argument has an illegal value.