Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/22/2024
Public

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

Document Table of Contents

?ggsvp3

Performs preprocessing for a generalized SVD.

Syntax

lapack_int LAPACKE_sggsvp3 (int matrix_layout, char jobu, char jobv, char jobq, lapack_int m, lapack_int p, lapack_int n, float * a, lapack_int lda, float * b, lapack_int ldb, float tola, float tolb, lapack_int * k, lapack_int * l, float * u, lapack_int ldu, float * v, lapack_int ldv, float * q, lapack_int ldq);

lapack_int LAPACKE_dggsvp3 (int matrix_layout, char jobu, char jobv, char jobq, lapack_int m, lapack_int p, lapack_int n, double * a, lapack_int lda, double * b, lapack_int ldb, double tola, double tolb, lapack_int * k, lapack_int * l, double * u, lapack_int ldu, double * v, lapack_int ldv, double * q, lapack_int ldq);

lapack_int LAPACKE_cggsvp3 (int matrix_layout, char jobu, char jobv, char jobq, lapack_int m, lapack_int p, lapack_int n, lapack_complex_float * a, lapack_int lda, lapack_complex_float * b, lapack_int ldb, float tola, float tolb, lapack_int * k, lapack_int * l, lapack_complex_float * u, lapack_int ldu, lapack_complex_float * v, lapack_int ldv, lapack_complex_float * q, lapack_int ldq);

lapack_int LAPACKE_zggsvp3 (int matrix_layout, char jobu, char jobv, char jobq, lapack_int m, lapack_int p, lapack_int n, lapack_complex_double * a, lapack_int lda, lapack_complex_double * b, lapack_int ldb, double tola, double tolb, lapack_int * k, lapack_int * l, lapack_complex_double * u, lapack_int ldu, lapack_complex_double * v, lapack_int ldv, lapack_complex_double * q, lapack_int ldq);

Include Files

  • mkl_lapack.h

Include Files

  • mkl.h

Description

?ggsvp3 computes orthogonal or unitary matrices U, V, and Q such that

for real flavors:

if m - k - l 0;

if m - k - l< 0;

for complex flavors:

if m - k - l 0;

if m - k-l< 0;

where the k-by-k matrix A12 and l-by-l matrix B13 are nonsingular upper triangular; A23 is l-by-l upper triangular if m-k-l 0, otherwise A23 is (m-k-by-l upper trapezoidal. k + l = the effective numerical rank of the (m + p)-by-n matrix (AT,BT)T for real flavors or (AH,BH)H for complex flavors.

This decomposition is the preprocessing step for computing the Generalized Singular Value Decomposition (GSVD), see ?ggsvd3.

Input Parameters

matrix_layout

Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).

jobu

= 'U': Orthogonal/unitary matrix U is computed;

= 'N': U is not computed.

jobv

= 'V': Orthogonal/unitary matrix V is computed;

= 'N': V is not computed.

jobq

= 'Q': Orthogonal/unitary matrix Q is computed;

= 'N': Q is not computed.

m

The number of rows of the matrix A.

m 0.

p

The number of rows of the matrix B.

p 0.

n

The number of columns of the matrices A and B.

n 0.

a

Array, size (lda*n).

On entry, the m-by-n matrix A.

lda

The leading dimension of the array a.

lda max(1,m).

b

Array, size (ldb*n).

On entry, the p-by-n matrix B.

ldb

The leading dimension of the array b.

ldb max(1,p).

tola, tolb

tola and tolb are the thresholds to determine the effective numerical rank of matrix B and a subblock of A. Generally, they are set to

tola = max(m,n)*norm(a)*MACHEPS,

tolb = max(p,n)*norm(b)*MACHEPS.

The size of tola and tolb may affect the size of backward errors of the decomposition.

ldu

The leading dimension of the array u.

ldu max(1,m) if jobu = 'U'; ldu 1 otherwise.

ldv

The leading dimension of the array v.

ldv max(1,p) if jobv = 'V'; ldv 1 otherwise.

ldq

The leading dimension of the array q.

ldq max(1,n) if jobq = 'Q'; ldq 1 otherwise.

Output Parameters

a

On exit, a contains the triangular (or trapezoidal) matrix described in the Description section.

b

On exit, b contains the triangular matrix described in the Description section.

k, l

On exit, k and l specify the dimension of the subblocks described in Description section.

k + l = effective numerical rank of (AT,BT)T for real flavors or (AH,BH)H for complex flavors.

u

Array, size (ldu*m).

If jobu = 'U', u contains the orthogonal/unitary matrix U.

If jobu = 'N', u is not referenced.

v

Array, size (ldv*p).

If jobv = 'V', v contains the orthogonal/unitary matrix V.

If jobv = 'N', v is not referenced.

q

Array, size (ldq*n).

If jobq = 'Q', q contains the orthogonal/unitary matrix Q.

If jobq = 'N', q is not referenced.

Return Values

This function returns a value info.

= 0: successful exit.

< 0: if info = -i, the i-th argument had an illegal value.

Application Notes

The subroutine uses LAPACK subroutine ?geqp3 for the QR factorization with column pivoting to detect the effective numerical rank of the A matrix. It may be replaced by a better rank determination strategy.

?ggsvp3 replaces the deprecated subroutine ?ggsvp.