diff --git a/doc/C02_TutorialMatrixArithmetic.dox b/doc/C02_TutorialMatrixArithmetic.dox
index 323cc550b..7e5615d6a 100644
--- a/doc/C02_TutorialMatrixArithmetic.dox
+++ b/doc/C02_TutorialMatrixArithmetic.dox
@@ -152,7 +152,7 @@ Example: \include tut_arithmetic_redux_basic.cpp
Output: \include tut_arithmetic_redux_basic.out
-The \em trace of a matrix, as returned by the function \c trace(), is the sum of the diagonal coefficients and can also be computed as efficiently using a.diagonal().sum(), as we see later on.
+The \em trace of a matrix, as returned by the function \c trace(), is the sum of the diagonal coefficients and can also be computed as efficiently using a.diagonal().sum(), as we will see later on.
There also exist variants of the \c minCoeff and \c maxCoeff functions returning the coordinates of the respective coefficient via the arguments:
diff --git a/doc/TopicLinearAlgebraDecompositions.dox b/doc/TopicLinearAlgebraDecompositions.dox
index adaa6cf35..0a8d89b2e 100644
--- a/doc/TopicLinearAlgebraDecompositions.dox
+++ b/doc/TopicLinearAlgebraDecompositions.dox
@@ -99,7 +99,7 @@ namespace Eigen {
LDLT |
- Positive or negative semidefinite |
+ Positive or negative semidefinite1 |
Very fast |
Good |
- |
@@ -109,6 +109,8 @@ namespace Eigen {
Soon: blocking |
+ \n Singular values and eigenvalues decompositions |
+
SVD |
- |
@@ -136,7 +138,7 @@ namespace Eigen {
SelfAdjointEigenSolver |
Self-adjoint |
- Fast, depends on condition number |
+ Fast-average2 |
Good |
Yes |
Eigenvalues/vectors |
@@ -148,7 +150,7 @@ namespace Eigen {
ComplexEigenSolver |
Square |
- Slow, depends on condition number |
+ Slow-very slow2 |
Depends on condition number |
Yes |
Eigenvalues/vectors |
@@ -160,7 +162,7 @@ namespace Eigen {
EigenSolver |
Square and real |
- Average, depends on condition number |
+ Average-slow2 |
Depends on condition number |
Yes |
Eigenvalues/vectors |
@@ -172,7 +174,7 @@ namespace Eigen {
GeneralizedSelfAdjointEigenSolver |
Square |
- Fast, depends on condition number |
+ Fast-average2 |
Depends on condition number |
- |
Generalized eigenvalues/vectors |
@@ -181,10 +183,12 @@ namespace Eigen {
- |
+ \n Helper decompositions |
+
RealSchur |
Square and real |
- Average, depends on condition number |
+ Average-slow2 |
Depends on condition number |
Yes |
- |
@@ -196,7 +200,7 @@ namespace Eigen {
ComplexSchur |
Square and real |
- Slow, depends on condition number |
+ Slow-very slow2 |
Depends on condition number |
Yes |
- |
@@ -231,7 +235,7 @@ namespace Eigen {
HessenbergDecomposition |
- - |
+ Square |
Average |
Good |
- |
@@ -243,10 +247,32 @@ namespace Eigen {
+\b Notes:
+
+- \b 1: There exist a couple of variants of the LDLT algorithm. Eigen's one produces a pure diagonal matrix, and therefore it cannot handle indefinite matrix, unlike Lapack's one which produces a block diagonal matrix.
+- \b 2: Eigenvalues and Schur decompositions rely on iterative algorithms. Their convergence speed depends on how the eigenvalues are well separated.
+
+
\section TopicLinAlgTerminology Terminology
-TODO explain selfadjoint, positive definite/semidefinite, blocking, unrollers, ....
+
+ - Selfadjoint
+ - For a real matrix, selfadjoint is a synonym for symmetric. For a complex matrix, selfadjoint is a synonym for \em hermitian.
+ More generally, a matrix \f$ A \f$ is selfadjoint if and only if it is equal to its adjoint \f$ A^* \f$. The adjoint is also called the \em conjugate \em transpose.
+ - Positive/negative definite
+ - A selfadjoint matrix \f$ A \f$ is positive definite if \f$ v^* A v > 0 \f$ for any non zero vector \f$ v \f$.
+ In the same vein, it is negative definite if \f$ v^* A v < 0 \f$ for any non zero vector \f$ v \f$
+ - Positive/negative semidefinite
+ - A selfadjoint matrix \f$ A \f$ is positive semi-definite if \f$ v^* A v \ge 0 \f$ for any non zero vector \f$ v \f$.
+ In the same vein, it is negative semi-definite if \f$ v^* A v \le 0 \f$ for any non zero vector \f$ v \f$
+ - Blocking
+ - Means the algorithm can work per block, whence guarantying a good scaling of the performance for large matrices.
+ - Meta-unroller
+ - Means the algorithm is automatically and explicitly unrolled for very small fixed size matrices.
+
+
+
*/