TO DO LIST (optional optimization) - do all the allocations in the allocate part - support static matrices - return a error at compilation time when using integer matrices (int, long, std::complex, ...) to finish the algorithm : -implement the last part of the algorithm as described on the reference paper. You may find more information on that part on this paper -to replace the call to JacobiSVD at the end of the divide algorithm, just after the call to deflation. (suggested step by step resolution) 0) comment the call to Jacobi in the last part of the divide method and everything right after until the end of the method. What is commented can be a guideline to steps 3) 4) and 6) 1) solve the secular equation (Characteristic equation) on the values that are not null (zi!=0 and di!=0), after the deflation wich should be uncommented in the divide method 2) remember the values of the singular values that are already computed (zi=0) 3) assign the singular values found in m_computed at the right places (with the ones found in step 2) ) in decreasing order 4) set the firstcol to zero (except the first element) in m_computed 5) compute all the singular vectors when CompV is set to true and only the left vectors when CompV is set to false 6) multiply naiveU and naiveV to the right by the matrices found, only naiveU when CompV is set to false, /!\ if CompU is false NaiveU has only 2 rows 7) delete everything commented in step 0)