Visible to Intel only — GUID: GUID-EA9110B0-4EE8-46EE-851E-327F44597C7E
Visible to Intel only — GUID: GUID-EA9110B0-4EE8-46EE-851E-327F44597C7E
?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.