Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?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:

Equation

or unitary matrix:

Equation

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. .

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, v1t, v2t are stored in row-major order.
otherwise
x, u1, u2, v1t, v2t are stored in column-major order.
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 matrix X.

p

The number of rows in x11 and x12. 0 pm.

q

The number of columns in x11 and x21. 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 array X11. If trans = 'T', ldx11p for column major layout and ldx11q for row major layout. Otherwise, ldx11q.

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 array X12. If trans = 'N', ldx12p for column major layout and ldx12m - q for row major layout. . Otherwise, ldx12m-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 array X21. If trans = 'N', ldx21m-p for column major layout and ldx12q for row major layout. . Otherwise, ldx21q.

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 array X21. If trans = 'N', ldx22m-p for column major layout and ldx22m - q for row major layout. . Otherwise, ldx22m-q.

Output Parameters

x11

On exit, the form depends on trans:

If trans='N',
the columns of the lower triangle of x11 specify reflectors for p1, the rows of the upper triangle of x11(1:q - 1, q:q - 1) specify reflectors for q1
otherwise trans='T',
the rows of the upper triangle of x11 specify reflectors for p1, the columns of the lower triangle of x11(1:q - 1, q:q - 1) specify reflectors for q1

x12

On exit, the form depends on trans:

If trans='N',
the columns of the upper triangle of x12 specify the first p reflectors for q2
otherwise trans='T',
the columns of the lower triangle of x12 specify the first p reflectors for q2

x21

On exit, the form depends on trans:

If trans='N',
the columns of the lower triangle of x21 specify the reflectors for p2
otherwise trans='T',
the columns of the upper triangle of x21 specify the reflectors for p2

x22

On exit, the form depends on trans:

If trans='N',
the rows of the upper triangle of x22(q+1:m-p,p+1:m-q) specify the last m-p-q reflectors for q2
otherwise trans='T',
the columns of the lower triangle of x22(p+1:m-q,q+1:m-p) specify the last m-p-q reflectors for p2

theta

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.

phi

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.

taup1

Array, size p.

Scalar factors of the elementary reflectors that define p1.
taup2

Array, size m-p.

Scalar factors of the elementary reflectors that define p2.
tauq1

Array, size q.

Scalar factors of the elementary reflectors that define q1.
tauq2

Array, size m-q.

Scalar factors of the elementary reflectors that define q2.

Return Values

This function returns a value info.

If info=0, the execution is successful.

If info = -i, the i-th parameter had an illegal value.