From 75a94b966246f3987d3a95ea6d5feaba6ecc2d03 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Wed, 4 May 2016 12:53:14 +0200 Subject: [PATCH] Improve documentation of BDCSVD --- Eigen/src/SVD/BDCSVD.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Eigen/src/SVD/BDCSVD.h b/Eigen/src/SVD/BDCSVD.h index bfce1bec0..8df570647 100644 --- a/Eigen/src/SVD/BDCSVD.h +++ b/Eigen/src/SVD/BDCSVD.h @@ -50,6 +50,18 @@ struct traits > * * \tparam _MatrixType the type of the matrix of which we are computing the SVD decomposition * + * This class first reduces the input matrix to bi-diagonal form using class UpperBidiagonalization, + * and then performs a divide-and-conquer diagonalization. Small blocks are diagonalized using class JacobiSVD. + * You can control the switching size with the setSwitchSize() method, default is 16. + * For small matrice (<16), it is thus preferable to directly use JacobiSVD. For larger ones, BDCSVD is highly + * recommended and can several order of magnitude faster. + * + * \warning this algorithm is unlikely to provide accurate result when compiled with unsafe math optimizations. + * For instance, this concerns Intel's compiler (ICC), which perfroms such optimization by default unless + * you compile with the \c -fp-model \c precise option. Likewise, the \c -ffast-math option of GCC or clang will + * significantly degrade the accuracy. + * + * \sa class JacobiSVD */ template class BDCSVD : public SVDBase >