LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine cunbdb1 | ( | integer | m, |
integer | p, | ||
integer | q, | ||
complex, dimension(ldx11,*) | x11, | ||
integer | ldx11, | ||
complex, dimension(ldx21,*) | x21, | ||
integer | ldx21, | ||
real, dimension(*) | theta, | ||
real, dimension(*) | phi, | ||
complex, dimension(*) | taup1, | ||
complex, dimension(*) | taup2, | ||
complex, dimension(*) | tauq1, | ||
complex, dimension(*) | work, | ||
integer | lwork, | ||
integer | info ) |
CUNBDB1
Download CUNBDB1 + dependencies [TGZ] [ZIP] [TXT]
!> !> CUNBDB1 simultaneously bidiagonalizes the blocks of a tall and skinny !> matrix X with orthonormal columns: !> !> [ B11 ] !> [ X11 ] [ P1 | ] [ 0 ] !> [-----] = [---------] [-----] Q1**T . !> [ X21 ] [ | P2 ] [ B21 ] !> [ 0 ] !> !> X11 is P-by-Q, and X21 is (M-P)-by-Q. Q must be no larger than P, !> M-P, or M-Q. Routines CUNBDB2, CUNBDB3, and CUNBDB4 handle cases in !> which Q is not the minimum dimension. !> !> The unitary matrices P1, P2, and Q1 are P-by-P, (M-P)-by-(M-P), !> and (M-Q)-by-(M-Q), respectively. They are represented implicitly by !> Householder vectors. !> !> B11 and B12 are Q-by-Q bidiagonal matrices represented implicitly by !> angles THETA, PHI. !> !>
[in] | M | !> M is INTEGER !> The number of rows X11 plus the number of rows in X21. !> |
[in] | P | !> P is INTEGER !> The number of rows in X11. 0 <= P <= M. !> |
[in] | Q | !> Q is INTEGER !> The number of columns in X11 and X21. 0 <= Q <= !> MIN(P,M-P,M-Q). !> |
[in,out] | X11 | !> X11 is COMPLEX array, dimension (LDX11,Q) !> On entry, the top block of the matrix X to be reduced. On !> exit, the columns of tril(X11) specify reflectors for P1 and !> the rows of triu(X11,1) specify reflectors for Q1. !> |
[in] | LDX11 | !> LDX11 is INTEGER !> The leading dimension of X11. LDX11 >= P. !> |
[in,out] | X21 | !> X21 is COMPLEX array, dimension (LDX21,Q) !> On entry, the bottom block of the matrix X to be reduced. On !> exit, the columns of tril(X21) specify reflectors for P2. !> |
[in] | LDX21 | !> LDX21 is INTEGER !> The leading dimension of X21. LDX21 >= M-P. !> |
[out] | THETA | !> THETA is REAL array, dimension (Q) !> The entries of the bidiagonal blocks B11, B21 are defined by !> THETA and PHI. See Further Details. !> |
[out] | PHI | !> PHI is REAL array, dimension (Q-1) !> The entries of the bidiagonal blocks B11, B21 are defined by !> THETA and PHI. See Further Details. !> |
[out] | TAUP1 | !> TAUP1 is COMPLEX array, dimension (P) !> The scalar factors of the elementary reflectors that define !> P1. !> |
[out] | TAUP2 | !> TAUP2 is COMPLEX array, dimension (M-P) !> The scalar factors of the elementary reflectors that define !> P2. !> |
[out] | TAUQ1 | !> TAUQ1 is COMPLEX array, dimension (Q) !> The scalar factors of the elementary reflectors that define !> Q1. !> |
[out] | WORK | !> WORK is COMPLEX array, dimension (LWORK) !> |
[in] | LWORK | !> LWORK is INTEGER !> The dimension of the array WORK. 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. !> |
[out] | INFO | !> INFO is INTEGER !> = 0: successful exit. !> < 0: if INFO = -i, the i-th argument had an illegal value. !> |
!> !> The upper-bidiagonal blocks B11, B21 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 a THETA !> with a sine or cosine of a PHI. See [1] or CUNCSD for details. !> !> P1, P2, and Q1 are represented as products of elementary reflectors. !> See CUNCSD2BY1 for details on generating P1, P2, and Q1 using CUNGQR !> and CUNGLQ. !>
Definition at line 198 of file cunbdb1.f.