Developer Reference

  • 2020.2
  • 07/15/2020
  • Public Content
Contents

?gejsv

Computes the singular value decomposition using a preconditioned Jacobi SVD method.

Syntax

call sgejsv
(
joba
,
jobu
,
jobv
,
jobr
,
jobt
,
jobp
,
m
,
n
,
a
,
lda
,
sva
,
u
,
ldu
,
v
,
ldv
,
work
,
lwork
,
iwork
,
info
)
call dgejsv
(
joba
,
jobu
,
jobv
,
jobr
,
jobt
,
jobp
,
m
,
n
,
a
,
lda
,
sva
,
u
,
ldu
,
v
,
ldv
,
work
,
lwork
,
iwork
,
info
)
call cgejsv
(
joba
,
jobu
,
jobv
,
jobr
,
jobt
,
jobp
,
m
,
n
,
a
,
lda
,
sva
,
u
,
ldu
,
v
,
ldv
,
cwork
,
lwork
,
rwork
,
lrwork
,
iwork
,
info
)
call zgejsv
(
joba
,
jobu
,
jobv
,
jobr
,
jobt
,
jobp
,
m
,
n
,
a
,
lda
,
sva
,
u
,
ldu
,
v
,
ldv
,
cwork
,
lwork
,
rwork
,
lrwork
,
iwork
,
info
)
Include Files
  • mkl.fi
Description
The routine computes the singular value decomposition (SVD) of a real/complex
m
-by-
n
matrix
A
, where
m
n
.
The SVD is written as
A
=
U
*
Σ
*
V
T
, for real routines
A
=
U
*
Σ
*
V
H
, for complex routines
where
Σ
is an
m
-by-
n
matrix which is zero except for its
n
diagonal elements,
U
is an
m
-by-
n
(or
m
-by-
m
) orthonormal matrix, and
V
is an
n
-by-
n
orthogonal matrix. The diagonal elements of
Σ
are the singular values of
A
; the columns of
U
and
V
are the left and right singular vectors of
A
, respectively. The matrices
U
and
V
are computed and stored in the arrays
u
and
v
, respectively. The diagonal of
Σ
is computed and stored in the array
sva
.
The
?gejsv
routine can sometimes compute tiny singular values and their singular vectors much more accurately than other SVD routines.
The routine implements a preconditioned Jacobi SVD algorithm. It uses
?geqp3
,
?geqrf
, and
?gelqf
as preprocessors and preconditioners. Optionally, an additional row pivoting can be used as a preprocessor, which in some cases results in much higher accuracy. An example is matrix
A
with the structure
A = D1 * C * D2
, where
D1
,
D2
are arbitrarily ill-conditioned diagonal matrices and