Developer Reference

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

?bdsdc

Computes the singular value decomposition of a real bidiagonal matrix using a divide and conquer method.

Syntax

call sbdsdc
(
uplo
,
compq
,
n
,
d
,
e
,
u
,
ldu
,
vt
,
ldvt
,
q
,
iq
,
work
,
iwork
,
info
)
call dbdsdc
(
uplo
,
compq
,
n
,
d
,
e
,
u
,
ldu
,
vt
,
ldvt
,
q
,
iq
,
work
,
iwork
,
info
)
call bdsdc
(
d
,
e
[
,
u
]
[
,
vt
]
[
,
q
]
[
,
iq
]
[
,
uplo
]
[
,
info
]
)
Include Files
  • mkl.fi
    ,
    lapack.f90
Description
The routine computes the Singular Value Decomposition (SVD) of a real
n
-by-
n
(upper or lower) bidiagonal matrix
B
:
B
=
U
*
Σ
*
V
T
, using a divide and conquer method, where
Σ
is a diagonal matrix with non-negative diagonal elements (the singular values of
B
), and
U
and
V
are orthogonal matrices of left and right singular vectors, respectively.
?bdsdc
can be used to compute all singular values, and optionally, singular vectors or singular vectors in compact form.
This rotuine uses
?lasd0
,
?lasd1
,
?lasd2
,
?lasd3
,
?lasd4
,
?lasd5
,
?lasd6
,
?lasd7
,
?lasd8
,
?lasd9
,
?lasda
,
?lasdq
,
?lasdt
.
Input Parameters
uplo
CHARACTER*1
.
Must be
'U'
or
'L'
.
If
uplo
=
'U'
,
B
is an upper bidiagonal matrix.
If
uplo
=
'L'
,
B
is a lower bidiagonal matrix.
compq
CHARACTER*1
.
Must be
'N'
,
'P'
, or
'I'
.
If
compq
=
'N'
, compute singular values only.
If
compq
=
'P'
, compute singular values and compute singular vectors in compact form.
If
compq
=
'I'
, compute singular values and singular vectors.
d
,
e
,
work
REAL
for
sbdsdc
DOUBLE PRECISION
for
dbdsdc
.
Arrays:
d
(*)
contains the
n
diagonal elements of the bidiagonal matrix
B
. The size of
d
must be at least max(1,
n
).
e
(*)
contains the off-diagonal elements of the bidiagonal matrix
B
. The size of
e
must be at least max(1,
n
).
work
(*) is a workspace array.
The dimension of
work
must be at least:
max(1, 4*
n
), if
compq
=
'N'
or
compq
=
'P'
;
max(1, 3*
n
2
+4*
n
), if
compq
=
'I'
.