Developer Reference for Intel® oneAPI Math Kernel Library for C
?ggsvp
Computes the preprocessing decomposition for the generalized SVD (deprecated).
Syntax
lapack_int LAPACKE_sggsvp(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_dggsvp(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_cggsvp(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_zggsvp(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.h
Description
sggsvp dggsvp cggsvp zggsvp ggsvp This routine is deprecated; use ggsvp3 (Performs preprocessing for a generalized SVD.) .
The routine computes orthogonal matrices U , V and Q such that
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. The sum k + l is equal to the effective numerical rank of the ( m + p )-by- n matrix ( AH , BH )H .
This decomposition is the preprocessing step for computing the Generalized Singular Value Decomposition (GSVD), see subroutine ?tgsja .
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
jobu
Must be ‘U’ or ‘N’ .
If jobu = 'U' , orthogonal/unitary matrix U is computed. If jobu = 'N' , U is not computed.
jobv
Must be ‘V’ or ‘N’ .
If jobv = 'V' , orthogonal/unitary matrix V is computed. If jobv = 'N' , V is not computed.
jobq
Must be ‘Q’ or ‘N’ .
If jobq = 'Q' , orthogonal/unitary matrix Q is computed. If jobq = 'N' , Q is not computed.
- m
-
The number of rows in the matrix A. The value of m must be at least zero.
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 , b , tau , work
-
REAL for sggsvp DOUBLE PRECISION for dggsvp COMPLEX for cggsvp DOUBLE COMPLEX for zggsvp . Arrays:
a (size at least max(1, lda * n ) for column major layout and max(1, lda * m ) for row major layout) contains the m -by- n matrix A .
The second dimension of a must be at least max(1, n ).
b (size at least max(1, ldb * n ) for column major layout and max(1, ldb * p ) for row major layout) contains the p -by- n matrix B .
The second dimension of b must be at least max(1, n ). tau (* ) is a workspace array. The dimension of tau must be at least max(1, n ). work (* ) is a workspace array. The dimension of work must be at least max(1, 3 n , m , p ).
lda
The leading dimension of a ; at least max(1, m ) for column major layout and max(1, n ) for row major layout .
ldb
The leading dimension of b ; at least max(1, p ) for column major layout and max(1, n ) for row major layout .
- tola , tolb
-
REAL for single-precision flavors DOUBLE PRECISION for double-precision flavors. 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)*||A||*MACHEPS , tolb = max(p, n)*||B||*MACHEPS . The size of tola and tolb may affect the size of backward errors of the decomposition.
ldu
The leading dimension of the output array u . ldu≥ max(1, m) if jobu = 'U' ; ldu≥ 1 otherwise.
ldv
The leading dimension of the output array v . ldv≥ max(1, p) if jobv = 'V' ; ldv≥ 1 otherwise.
ldq
The leading dimension of the output array q . ldq≥ max(1, n) if jobq = 'Q' ; ldq≥ 1 otherwise.
iwork
Workspace array, size at least max(1, n ).
- rwork
-
REAL for cggsvp DOUBLE PRECISION for zggsvp . Workspace array, size at least max(1, 2 n ). Used in complex flavors only.
Output Parameters
- a
-
Overwritten by the triangular (or trapezoidal) matrix described in the Description section .
- b
-
Overwritten by the triangular matrix described in the Description section .
k , l
On exit, k and l specify the dimension of subblocks. The sum k + l is equal to effective numerical rank of ( AH , BH )H .
- u , v , q
-
REAL for sggsvp DOUBLE PRECISION for dggsvp COMPLEX for cggsvp DOUBLE COMPLEX for zggsvp . Arrays:
If jobu = 'U' , u (size max(1, ldu * m )) contains the orthogonal/unitary matrix U .
The second dimension of u must be at least max(1, m ). If jobu = 'N' , u is not referenced.
If jobv = 'V' , v (size max(1, ldv * p )) contains the orthogonal/unitary matrix V .
The second dimension of v must be at least max(1, m ). If jobv = 'N' , v is not referenced.
If jobq = 'Q' , q (size max(1, ldq * n )) contains the orthogonal/unitary matrix Q .
The second dimension of q must be at least max(1, n ). If jobq = 'N' , q is not referenced.
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.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.