Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 3/31/2023
Public

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

Document Table of Contents

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

Tall and Skinny Matrix Routines

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

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

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

See Also