Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
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

?orbdb1/?unbdb1

Simultaneously bidiagonalizes the blocks of a tall and skinny matrix with orthonormal columns.

Syntax

call sorbdb1( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )

call dorbdb1( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )

call cunbdb1( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )

call zunbdb1( m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, taup2, tauq1, work, lwork, info )

Include Files

  • mkl.fi, lapack.f90

Description

The routines ?orbdb1/?unbdb1 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 q by q 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 pm.

q

INTEGER. The number of columns in x11 and x21. 0 q min(p,m-p,m-q).

x11

REAL for sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

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 sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

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 sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

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

The columns of tril(x11) specify reflectors for p1 and the rows of triu(x11,1) specify reflectors for q1, where tril(A) denotes the lower triangle of A, and triu(A) denotes the upper triangle of A.

x21

On exit, the columns of tril(x21) specify the reflectors for p2

theta

REAL for sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

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 sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

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 sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

Array, DIMENSION (p).

Scalar factors of the elementary reflectors that define p1.
taup2

REAL for sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

Array, DIMENSION (m-p).

Scalar factors of the elementary reflectors that define p2.
tauq1

REAL for sorbdb1

DOUBLE PRECISION for dorbdb1

COMPLEX for cunbdb1

DOUBLE COMPLEX for zunbdb1

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