Developer Reference

Contents

?lasdq

Computes the SVD of a real bidiagonal matrix with diagonal
d
and off-diagonal
e
. Used by
?bdsdc
.

Syntax

void slasdq
(
char
*uplo
,
lapack_int
*sqre
,
lapack_int
*n
,
lapack_int
*ncvt
,
lapack_int
*nru
,
lapack_int
*ncc
,
float
*d
,
float
*e
,
float
*vt
,
lapack_int
*ldvt
,
float
*u
,
lapack_int
*ldu
,
float
*c
,
lapack_int
*ldc
,
float
*work
,
lapack_int
*info
);
void dlasdq
(
char
*uplo
,
lapack_int
*sqre
,
lapack_int
*n
,
lapack_int
*ncvt
,
lapack_int
*nru
,
lapack_int
*ncc
,
double
*d
,
double
*e
,
double
*vt
,
lapack_int
*ldvt
,
double
*u
,
lapack_int
*ldu
,
double
*c
,
lapack_int
*ldc
,
double
*work
,
lapack_int
*info
);
Include Files
  • mkl.h
Description
The routine
?lasdq
computes the singular value decomposition (
SVD
) of a real (upper or lower) bidiagonal matrix with diagonal
d
and off-diagonal
e
, accumulating the transformations if desired. If
B
is the input bidiagonal matrix, the algorithm computes orthogonal matrices
Q
and
P
such that
B
=
Q
*
S
*
P
T
. The singular values
S
are overwritten on
d
.
The input matrix
U
is changed to
U
*
Q
if desired.
The input matrix
VT
is changed to
P
T
*
VT
if desired.
The input matrix
C
is changed to
Q
T
*
C
if desired.
Input Parameters
uplo
On entry,
uplo
specifies whether the input bidiagonal matrix is upper or lower bidiagonal.
If
uplo
=
'U'
or
'u'
,
B
is upper bidiagonal;
If
uplo
=
'L'
or
'l'
,
B
is lower bidiagonal.
sqre
= 0: then the input matrix is
n
-by-
n
.
= 1: then the input matrix is
n
-by-(
n
+1) if
uplu
=
'U'
and (
n
+1)-by-
n
if
uplu
=
'L'
. The bidiagonal matrix has
n
=
nl
+
nr
+ 1
rows and
m
=
n
+
sqre
n
columns.
n
On entry,
n
specifies the number of rows and columns in the matrix.
n
must be at least 0.
ncvt
On entry,
ncvt
specifies the number of columns of the matrix
VT
.
ncvt
must be at least 0.
nru
On entry,
nru
specifies the number of rows of the matrix
U
.
nru
must be at least 0.
ncc
On entry,
ncc
specifies the number of columns of the matrix
C
.
ncc
must be at least 0.
d
Array,
DIMENSION
(
n
). On entry,
d
contains the diagonal entries of the bidiagonal matrix.
e
Array,
DIMENSION
is (
n
-1) if
sqre
= 0
and
n
if
sqre
= 1
. On entry, the entries of
e
contain the off-diagonal entries of the bidiagonal matrix.
vt
Array,
DIMENSION
(
ldvt
,
ncvt
). On entry, contains a matrix which on exit has been premultiplied by
P
T
, dimension
n
-by-
ncvt
if
sqre
= 0
and (
n
+1)-by-
ncvt
if
sqre
= 1
(not referenced if
ncvt
=0).
ldvt
On entry,
ldvt
specifies the leading dimension of
vt
as declared in the calling (sub) program.
ldvt
must be at least 1. If
ncvt
is nonzero,
ldvt
must also be at least
n
.
u
Array,
DIMENSION
(
ldu
,
n
). On entry, contains a matrix which on exit has been postmultiplied by
Q
, dimension
nru
-by-
n
if
sqre
= 0
and
nru
-by-(
n
+1) if
sqre
= 1
(not referenced if
nru
=0).
ldu
On entry,
ldu
specifies the leading dimension of
u
as declared in the calling (sub) program.
ldu
must be at least
max(1,
nru
)
.
c
Array,
DIMENSION
(
ldc
,
ncc
). On entry, contains an
n
-by-
ncc
matrix which on exit has been premultiplied by
Q'
, dimension
n
-by-
ncc
if
sqre
= 0
and (
n
+1)-by-
ncc
if
sqre
= 1
(not referenced if
ncc
=0).
ldc
On entry,
ldc
specifies the leading dimension of
C
as declared in the calling (sub) program.
ldc
must be at least 1. If
ncc
is non-zero,
ldc
must also be at least
n
.
work
Array,
DIMENSION
(4
n
). This is a workspace array. Only referenced if one of
ncvt
,
nru
, or
ncc
is nonzero, and if
n
is at least 2.
Output Parameters
d
On normal exit,
d
contains the singular values in ascending order.
e
On normal exit,
e
will contain 0. If the algorithm does not converge,
d
and
e
will contain the diagonal and superdiagonal entries of a bidiagonal matrix orthogonally equivalent to the one given as input.
vt
On exit, the matrix has been premultiplied by
P
'.
u
On exit, the matrix has been postmultiplied by
Q
.
c
On exit, the matrix has been premultiplied by
Q
'.
info
On exit, a value of 0 indicates a successful exit. If
info
< 0
, argument number -
info
is illegal. If
info
> 0
, the algorithm did not converge, and
info
specifies how many superdiagonals did not converge.

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