1 | // This file is part of Eigen, a lightweight C++ template library |
2 | // for linear algebra. |
3 | // |
4 | // This Source Code Form is subject to the terms of the Mozilla |
5 | // Public License v. 2.0. If a copy of the MPL was not distributed |
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. |
7 | |
8 | #ifndef EIGEN_SVD_MODULE_H |
9 | #define EIGEN_SVD_MODULE_H |
10 | |
11 | #include "QR" |
12 | #include "Householder" |
13 | #include "Jacobi" |
14 | |
15 | #include "src/Core/util/DisableStupidWarnings.h" |
16 | |
17 | /** \defgroup SVD_Module SVD module |
18 | * |
19 | * |
20 | * |
21 | * This module provides SVD decomposition for matrices (both real and complex). |
22 | * Two decomposition algorithms are provided: |
23 | * - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones. |
24 | * - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems. |
25 | * These decompositions are accessible via the respective classes and following MatrixBase methods: |
26 | * - MatrixBase::jacobiSvd() |
27 | * - MatrixBase::bdcSvd() |
28 | * |
29 | * \code |
30 | * #include <Eigen/SVD> |
31 | * \endcode |
32 | */ |
33 | |
34 | #include "src/misc/RealSvd2x2.h" |
35 | #include "src/SVD/UpperBidiagonalization.h" |
36 | #include "src/SVD/SVDBase.h" |
37 | #include "src/SVD/JacobiSVD.h" |
38 | #include "src/SVD/BDCSVD.h" |
39 | #if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT) |
40 | #ifdef EIGEN_USE_MKL |
41 | #include "mkl_lapacke.h" |
42 | #else |
43 | #include "src/misc/lapacke.h" |
44 | #endif |
45 | #include "src/SVD/JacobiSVD_LAPACKE.h" |
46 | #endif |
47 | |
48 | #include "src/Core/util/ReenableStupidWarnings.h" |
49 | |
50 | #endif // EIGEN_SVD_MODULE_H |
51 | |