JacobiSVD_LAPACKE uses gesvd instead of gejsv
Submitted by Dirk Toewe
Assigned to Nobody
Link to original bugzilla bug (#1732)
Version: 3.3 (current stable)
Description
JacobiSVD_LAPACKE.h uses the LAPACKE method "gesvd" which is afaik not a Jacobi SVD method. LAPACKE does however offer a preconditioned Jacobi SVD method "gejsv" which might be more appropriate. The Jacobi SVD - with the right stopping criterion - offers higher relative accuracy as other SVD methods, see:
http://www.netlib.org/lapack/lawnspdf/lawn15.pdf
Users of Eigen might expect that high relative accuracy and be unpleasently surprised. My suggestion would be switch to "gejsv". "gejsv" is however slower than "gesvd". One remedy to that would be add a Lapacke version of BDCSVD. This way people can choose BDCSVD for performance and JacobiSVD for high relative accuracy.
If those changes are acceptable, I would be willing to file a pull request accordingly.