This bugzilla service is closed. All entries have been migrated to
Bug 1732 - JacobiSVD_LAPACKE uses gesvd instead of gejsv
Summary: JacobiSVD_LAPACKE uses gesvd instead of gejsv
Status: NEW
Alias: None
Product: Eigen
Classification: Unclassified
Component: SVD (show other bugs)
Version: 3.3 (current stable)
Hardware: All All
: Normal Accuracy Problem
Assignee: Nobody
Depends on:
Reported: 2019-07-19 20:07 UTC by Dirk Toewe
Modified: 2019-12-04 18:42 UTC (History)
2 users (show)


Description Dirk Toewe 2019-07-19 20:07:06 UTC
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:

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.
Comment 1 Nobody 2019-12-04 18:42:57 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance:

Note You need to log in before you can comment on or make changes to this bug.