Singular value matrix decomposition

Performs singular value decomposition of \(M\times N\) (\(M>N\)) matrix \(A = U*\Sigma*V^T\).

Parameters:

src pointer to input \(M\times N\) matrix \(A\) stored in column major order. After finish of work src will be filled with rows of \(U\) or not modified (depends of flag CV_HAL_SVD_MODIFY_A).
src_step number of bytes between two consequent columns of matrix \(A\).
w pointer to array for singular values of matrix \(A\) (i. e. first \(N\) diagonal elements of matrix \(\Sigma\)).
u pointer to output \(M\times N\) or \(M\times M\) matrix \(U\) (size depends of flags). Pointer must be valid if flag CV_HAL_SVD_MODIFY_A not used.
u_step number of bytes between two consequent rows of matrix \(U\).
vt pointer to array for \(N\times N\) matrix \(V^T\).
vt_step number of bytes between two consequent rows of matrix \(V^T\).
m number fo rows in matrix \(A\).
n number of columns in matrix \(A\).
flags algorithm options (combination of CV_HAL_SVD_FULL_UV, …).
// global functions

int
hal_ni_SVD32f(
    float* src,
    size_t src_step,
    float* w,
    float* u,
    size_t u_step,
    float* vt,
    size_t vt_step,
    int m,
    int n,
    int flags
    );

int
hal_ni_SVD64f(
    double* src,
    size_t src_step,
    double* w,
    double* u,
    size_t u_step,
    double* vt,
    size_t vt_step,
    int m,
    int n,
    int flags
    );