There is one prototype of gesdd
available, please see below.
gesdd( const char jobz, MatrixA& a, VectorS& s, MatrixU& u, MatrixVT& vt );
gesdd
(short for $FRIENDLY_NAME)
provides a C++ interface to LAPACK routines SGESDD, DGESDD, CGESDD, and
ZGESDD. gesdd
computes
the singular value decomposition (SVD) of a complex M-by-N matrix A,
optionally computing the left and/or right singular vectors, by using
divide-and-conquer method. The SVD is written
A = U * SIGMA * conjugate-transpose(V)
where SIGMA is an M-by-N matrix which is zero except for its min(m,n) diagonal elements, U is an M-by-M unitary matrix, and V is an N-by-N unitary matrix. The diagonal elements of SIGMA are the singular values of A; they are real and non-negative, and are returned in descending order. The first min(m,n) columns of U and V are the left and right singular vectors of A.
Note that the routine returns VT = V**H, not V.
The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.
The selection of the LAPACK routine is done during compile-time, and
is determined by the type of values contained in type MatrixA
.
The type of values is obtained through the value_type
meta-function typename value_type<MatrixA>::type
. The dispatching table below illustrates
to which specific routine the code path will be generated.
Table 1.155. Dispatching of gesdd
Value type of MatrixA |
LAPACK routine |
---|---|
|
SGESDD |
|
DGESDD |
|
CGESDD |
|
ZGESDD |
Defined in header boost/numeric/bindings/lapack/driver/gesdd.hpp
.
Parameters
The definition of term 1
The definition of term 2
The definition of term 3.
Definitions may contain paragraphs.
#include <boost/numeric/bindings/lapack/driver/gesdd.hpp> using namespace boost::numeric::bindings; lapack::gesdd( x, y, z );
this will output
[5] 0 1 2 3 4 5