New user self-registration is disabled due to spam. Please email eigen-core-team @ lists.tuxfamily.org if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 593 - Decomposition table claims some decompositions are rank-revealing, even though they do not provide a rank() method.
Summary: Decomposition table claims some decompositions are rank-revealing, even thoug...
Status: CONFIRMED
Alias: None
Product: Eigen
Classification: Unclassified
Component: General (show other bugs)
Version: unspecified
Hardware: All All
: Normal Feature Request
Assignee: Nobody
URL:
Whiteboard:
Keywords: JuniorJob
Depends on:
Blocks: 60 3.x
  Show dependency treegraph
 
Reported: 2013-04-25 06:24 UTC by Jim Garrison
Modified: 2019-01-17 15:36 UTC (History)
5 users (show)



Attachments

Description Jim Garrison 2013-04-25 06:24:41 UTC
The page http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html#TutorialLinAlgRankRevealing says:

> Certain decompositions are rank-revealing, i.e. are able to compute the rank of a matrix. These are typically also the decompositions that behave best in the face of a non-full-rank matrix (which in the square case means a singular matrix). On this table you can see for all our decompositions whether they are rank-revealing or not.

> Rank-revealing decompositions offer at least a rank() method.

The table is given at http://eigen.tuxfamily.org/dox/TopicLinearAlgebraDecompositions.html

Some of the decompositions given there that are claimed to be rank-revealing do not indeed have a rank() method, including e.g. SelfAdjointEigenSolver.
Comment 1 Gael Guennebaud 2013-06-10 13:19:25 UTC
Right, I guess this concerns all eigenvalues related algorithms.
Comment 2 Christoph Hertzberg 2014-06-20 11:11:38 UTC
The correct link is now:
http://eigen.tuxfamily.org/dox-devel/group__TopicLinearAlgebraDecompositions.html

I think adding rank() should be comparatively easy. Fixing this also requires
adding setThreshold()/threshold() methods.
Comment 3 Gael Guennebaud 2015-06-16 19:33:49 UTC
I'm not 100% sure about what to do with that entry. If I'm not mistaken, this only concerns eigenvalue decompositions, however, for them I really don't see the need for a rank() method. Perhaps we should rather update the documentation to completely split the table to better separate decompositions for linear solving and decomposition for eigenvalues problems. SVD would fit in the first category, even though it is highly related to the second...
Comment 4 Christoph Hertzberg 2015-08-19 19:36:15 UTC
Well, implementing this should be rather trivial -- but I see your point that this might encourage people to use this instead of simply using one of the pivoting QR-decompositions.
However, if someone needs an eigenvalue decomposition anyways, I see no reason to forbid extracting the rank (and kernel) of the matrix using this.
Perhaps, we can implement this, but warn in the documentation, that QR decomposition is much faster and SVD is more accurate if one needs to compute the rank of a matrix.
Comment 5 Gael Guennebaud 2015-09-02 07:10:51 UTC
Alright, let's go for it.

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