Neglect small singular value in JacobiSVD::solve and add JacobiSVD::rank()

Submitted by Gael Guennebaud @ggael

Assigned to Nobody

Link to original bugzilla bug (#620)
Version: 3.2

Description

Created attachment 356
Patch for JacobiSVD::solve and Jacobi::rank

Currently JacobiSVD::solve uses all the non zeros singular-values for solving, i.e., without any thresholding. In practice this led to many numerical issue and large errors for hill conditioned matrices. So far I recommended to use ColPivHouseholderQR but it's time to fix JacobiSVD. Here is a quick patch proposal.

Perhaps we should offert the possibility to tweak the threshold as in ColPivHouseholderQR?

We should also add regression tests.

Attachment 356, "Patch for JacobiSVD::solve and Jacobi::rank":
neglect_small_singularvalues.diff

Blocking

#558 (closed)

Edited by Eigen Bugzilla