Generic information, not Eigen-specific
Eigen-specific
Decomposition
Requirements on the matrix
Speed
Algorithm reliability and accuracy
Rank-revealing
Allows to compute (besides linear solving)
Linear solver provided by Eigen
Maturity of Eigen's implementation
Optimizations
Invertible
Fast
Depends on condition number
-
-
Yes
Excellent
Blocking
-
Slow
Proven
Yes
-
Yes
Excellent
-
-
Fast
Depends on condition number
-
Orthogonalization
Yes
Excellent
Blocking
-
Fast
Good
Yes
Orthogonalization
Yes
Excellent
Soon: blocking
-
Slow
Proven
Yes
Orthogonalization
Yes
Average
-
Positive definite
Very fast
Depends on condition number
-
-
Yes
Excellent
Blocking
Soon: meta unroller
Positive or negative semidefinite1
Very fast
Good
-
-
Yes
Excellent
Soon: blocking
Singular values and eigenvalues decompositions
JacobiSVD (two-sided)
-
Slow (but fast for small matrices)
Excellent-Proven3
Yes
Singular values/vectors, least squares
Yes (and does least squares)
Excellent
R-SVD
Self-adjoint
Fast-average2
Good
Yes
Eigenvalues/vectors
-
Good
Soon: specializations for 2x2 and 3x3
Square
Slow-very slow2
Depends on condition number
Yes
Eigenvalues/vectors
-
Average
-
Square and real
Average-slow2
Depends on condition number
Yes
Eigenvalues/vectors
-
Average
-
GeneralizedSelfAdjointEigenSolver
Square
Fast-average2
Depends on condition number
-
Generalized eigenvalues/vectors
-
Good
-
Helper decompositions
Square and real
Average-slow2
Depends on condition number
Yes
-
-
Average
-
Square
Slow-very slow2
Depends on condition number
Yes
-
-
Average
-
Self-adjoint
Fast
Good
-
-
-
Good
Soon: blocking
Square
Average
Good
-
-
-
Good
Soon: blocking
Notes:
A selfadjoint matrix is positive semi-definite if
for any non zero vector
. In the same vein, it is negative semi-definite if
for any non zero vector