##### gejsv

###### Prototype

There is one prototype of `gejsv` available, please see below.

    gejsv( const char joba, const char jobu, const char jobv,
            const char jobr, const char jobt, const char jobp, MatrixA& a,
            VectorSVA& sva, MatrixU& u, MatrixV& v );

###### Description

`gejsv` (short for $FRIENDLY_NAME) provides a C++ interface to LAPACK routines SGEJSV and DGEJSV. `gejsv` computes the singular value decomposition (SVD) of a real M-by-N matrix [A], where M >= N. The SVD of [A] is written as

[A] = [U] * [SIGMA] * [V]^t,

where [SIGMA] is an N-by-N (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 [SIGMA] are the singular values of [A]. The columns of [U] and [V] are the left and the 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 [SIGMA] is computed and stored in the array SVA.

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.128. Dispatching of gejsv

Value type of MatrixA | LAPACK routine
--- | ---
`float` | SGEJSV
`double` | DGEJSV

###### Definition

Defined in header `boost/numeric/bindings/lapack/driver/gejsv.hpp`.

###### Parameters or Requirements on Types

Parameters

MatrixA

  The definition of term 1

MatrixB

  The definition of term 2

MatrixC

  The definition of term 3.

  Definitions may contain paragraphs.

###### Complexity

###### Example

    #include <boost/numeric/bindings/lapack/driver/gejsv.hpp>
    using namespace boost::numeric::bindings;

    lapack::gejsv( x, y, z );

this will output

    [5] 0 1 2 3 4 5

###### Notes

###### See Also

- Originating Fortran source files sgejsv.f and dgejsv.f at Netlib.