?orbdb/?unbdb
?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
:

or unitary matrix:

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 , ..., and , ..., .
b
11
,
b
12
, b
21
, and b
22
are q
-by-q
bidiagonal matrices represented implicitly by angles theta
[0]theta
[q
- 1]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,u1,u2,v1,tv2are stored in row-major order.t
- otherwise
- x,u1,u2,v1,tv2are stored in column-major order.t
- 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 matrixX.
- p
- The number of rows inx11andx12.0.≤p≤m
- q
- The number of columns inx11andx21.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 arrayX11. Iftrans= 'T',ldx11≥pfor column major layout and. Otherwise,for row major layoutldx11≥q.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 arrayX12. Iftrans= 'N',ldx12≥pfor column major layout and. Otherwise,for row major layout.ldx12≥m-q.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 arrayX21. Iftrans= 'N',ldx21≥m-pfor column major layout and. Otherwise,for row major layout.ldx12≥q.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 arrayX21. Iftrans= 'N',ldx22≥m-pfor column major layout and. Otherwise,for row major layout.ldx22≥m-q.ldx22≥m-q
Output Parameters
- x11
- On exit, the form depends ontrans:
- Iftrans='N',
- the columns of the lower triangle ofx11specify reflectors forp1, the rows of the upper triangle ofx11(1:specify reflectors forq- 1,q:q - 1)q1
- otherwisetrans='T',
- the rows of the upper triangle ofx11specify reflectors forp1, the columns of the lower triangle ofx11(1:specify reflectors forq- 1,q:q - 1)q1
- x12
- On exit, the form depends ontrans:
- Iftrans='N',
- the columns of the upper triangle ofx12specify the firstpreflectors forq2
- otherwisetrans='T',
- the columns of the lower triangle ofx12specify the firstpreflectors forq2
- x21
- On exit, the form depends ontrans:
- Iftrans='N',
- the columns of the lower triangle ofx21specify the reflectors forp2
- otherwisetrans='T',
- the columns of the upper triangle ofx21specify the reflectors forp2
- x22
- On exit, the form depends ontrans:
- Iftrans='N',
- the rows of the upper triangle ofx22(q+1:m-p,p+1:m-q) specify the lastreflectors form-p-qq2
- otherwisetrans='T',
- the columns of the lower triangle ofx22(p+1:m-q,q+1:m-p) specify the lastreflectors form-p-qp2
- theta
- Array,size. The entries of bidiagonal blocksqb11,b12,b21, andb22can be computed from the anglesthetaandphi.See the Description section for details.
- phi
- Array,size. The entries of bidiagonal blocksq-1b11,b12,b21, andb22can be computed from the anglesthetaandphi.See the Description section for details.
- taup1
- Scalar factors of the elementary reflectors that defineArray,size.pp1.
- taup2
- Scalar factors of the elementary reflectors that defineArray,size.m-pp2.
- tauq1
- Scalar factors of the elementary reflectors that defineArray,size.qq1.
- tauq2
- Scalar factors of the elementary reflectors that defineArray,size.m-qq2.
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , the
info
= -i
i
-th parameter had an illegal value.