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