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

This routine is deprecated; use ggsvp3.

The routine computes orthogonal matrices U, V and Q such that


Equation


Equation


Equation

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-l0, 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 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, b

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.

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.

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

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.

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

Arrays:

If jobu = 'U', u (size max(1, ldu*m)) contains the orthogonal/unitary matrix U.

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

If jobv = 'V', v (size max(1, ldv*p)) contains the orthogonal/unitary matrix V.

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

If jobq = 'Q', q (size max(1, ldq*n)) contains the orthogonal/unitary matrix Q.

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.

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.
Seleccione el color del botón adhesivo: 
Orange (only for download buttons)