Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
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 (
A
T
,
B
T
)
T
for real flavors or (
A
H
,
B
H
)
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 (
A
T
,
B
T
)
T
for real flavors or (
A
H
,
B
H
)
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
.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804