diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-05-04 12:53:14 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-05-04 12:53:14 +0200 |
commit | 75a94b966246f3987d3a95ea6d5feaba6ecc2d03 (patch) | |
tree | 63c2efc04ee4514eaa68a5353b8fd991053d3850 /Eigen/src/SVD | |
parent | 968ec1c2ae285f9adb7f072407c6133faa803383 (diff) |
Improve documentation of BDCSVD
Diffstat (limited to 'Eigen/src/SVD')
-rw-r--r-- | Eigen/src/SVD/BDCSVD.h | 12 |
1 files changed, 12 insertions, 0 deletions
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<BDCSVD<_MatrixType> > * * \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<typename _MatrixType> class BDCSVD : public SVDBase<BDCSVD<_MatrixType> > |