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<int>, ...)

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)
