Intel® oneAPI Math Kernel Library Developer Reference - C
Simultaneously bidiagonalizes the blocks of a partitioned orthogonal/unitary matrix.
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 );
The routines ?orbdb/?unbdb simultaneously bidiagonalizes the blocks of an m-by-m partitioned orthogonal matrix X:
or unitary matrix:
x11 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 p1, p2, q1, and q2 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 b11, b12, b21, and b22 are q-by-q bidiagonal matrices represented implicitly by angles theta[0], ..., theta[q - 1] and phi[0], ..., phi[q - 2]. b11 and b12 are upper bidiagonal, while b21 and b22 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.
p1, p2, q1, and q2 are represented as products of elementary reflectors. .
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).
The number of rows and columns of the matrix X.
The number of rows in x11 and x12. 0 ≤p≤m.
The number of columns in x11 and x21. 0 ≤q≤ min(p,m-p,m-q).
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.
The leading dimension of the array X11. If trans = 'T', ldx11≥p for column major layout and ldx11≥q for row major layout. Otherwise, ldx11≥q.
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.
The leading dimension of the array X12. If trans = 'N', ldx12≥p for column major layout and ldx12≥m - q for row major layout. . Otherwise, ldx12≥m-q.
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.
The leading dimension of the array X21. If trans = 'N', ldx21≥m-p for column major layout and ldx12≥q for row major layout. . Otherwise, ldx21≥q.
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.
The leading dimension of the array X21. If trans = 'N', ldx22≥m-p for column major layout and ldx22≥m - q for row major layout. . Otherwise, ldx22≥m-q.
On exit, the form depends on trans:
On exit, the form depends on trans:
On exit, the form depends on trans:
On exit, the form depends on trans:
Array, size q. The entries of bidiagonal blocks b11, b12, b21, and b22 can be computed from the angles theta and phi. See the Description section for details.
Array, size q-1. The entries of bidiagonal blocks b11, b12, b21, and b22 can be computed from the angles theta and phi. See the Description section for details.
Array, size p.
Scalar factors of the elementary reflectors that define p1.Array, size m-p.
Scalar factors of the elementary reflectors that define p2.Array, size q.
Scalar factors of the elementary reflectors that define q1.Array, size m-q.
Scalar factors of the elementary reflectors that define q2.This function returns a value info.
If info=0, the execution is successful.
If info = -i, the i-th parameter had an illegal value.