#include "MatrixDecomposition/gesvj.hpp"
template < typename T, int NRMAX, int NCMAX, int MCU, int NCU > void gesvj ( int m, int n, T* A, T* U, T* S, T* V )
This function implements singular value decomposition of matrix A using one-sided Jacobi algorihtm.
\[\begin{equation*} {A = U \Sigma {V}^T}\end{equation*}\]
where \(A\) is a dense matrix of size \(m \times n\) , \(U\) is \(m \times m\) matrix with orthonormal columns, \(V\) is \(n \times n\) matrix with orthonormal columns, and \(\Sigma\) is diagonal matrix.
The maximum matrix size supported in FPGA is templated by NCMAX, NRMAX.
Parameters:
T | |
: | the data type of gesvj |
NRMAX | maximum number of rows of input matrix |
NCMAX | maximum number of columns of input matrix |
MCU | number of computation unit of M |
NCU | number of computation unit of N |
m | number of rows of matrix A |
n | number of cols of matrix A |
A | input matrix of size \(m \times n\) |
S | decomposed diagonal singular matrix of size n |
U | left U matrix of SVD of size \(m \times m\) |
V | right V matrix of SVD \(n \times n\) |