xref: /aosp_15_r20/external/eigen/Eigen/IterativeLinearSolvers (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
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_ITERATIVELINEARSOLVERS_MODULE_H
9*bf2c3715SXin Li#define EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
10*bf2c3715SXin Li
11*bf2c3715SXin Li#include "SparseCore"
12*bf2c3715SXin Li#include "OrderingMethods"
13*bf2c3715SXin Li
14*bf2c3715SXin Li#include "src/Core/util/DisableStupidWarnings.h"
15*bf2c3715SXin Li
16*bf2c3715SXin Li/**
17*bf2c3715SXin Li  * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
18*bf2c3715SXin Li  *
19*bf2c3715SXin Li  * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse.
20*bf2c3715SXin Li  * Those solvers are accessible via the following classes:
21*bf2c3715SXin Li  *  - ConjugateGradient for selfadjoint (hermitian) matrices,
22*bf2c3715SXin Li  *  - LeastSquaresConjugateGradient for rectangular least-square problems,
23*bf2c3715SXin Li  *  - BiCGSTAB for general square matrices.
24*bf2c3715SXin Li  *
25*bf2c3715SXin Li  * These iterative solvers are associated with some preconditioners:
26*bf2c3715SXin Li  *  - IdentityPreconditioner - not really useful
27*bf2c3715SXin Li  *  - DiagonalPreconditioner - also called Jacobi preconditioner, work very well on diagonal dominant matrices.
28*bf2c3715SXin Li  *  - IncompleteLUT - incomplete LU factorization with dual thresholding
29*bf2c3715SXin Li  *
30*bf2c3715SXin Li  * Such problems can also be solved using the direct sparse decomposition modules: SparseCholesky, CholmodSupport, UmfPackSupport, SuperLUSupport.
31*bf2c3715SXin Li  *
32*bf2c3715SXin Li    \code
33*bf2c3715SXin Li    #include <Eigen/IterativeLinearSolvers>
34*bf2c3715SXin Li    \endcode
35*bf2c3715SXin Li  */
36*bf2c3715SXin Li
37*bf2c3715SXin Li#include "src/IterativeLinearSolvers/SolveWithGuess.h"
38*bf2c3715SXin Li#include "src/IterativeLinearSolvers/IterativeSolverBase.h"
39*bf2c3715SXin Li#include "src/IterativeLinearSolvers/BasicPreconditioners.h"
40*bf2c3715SXin Li#include "src/IterativeLinearSolvers/ConjugateGradient.h"
41*bf2c3715SXin Li#include "src/IterativeLinearSolvers/LeastSquareConjugateGradient.h"
42*bf2c3715SXin Li#include "src/IterativeLinearSolvers/BiCGSTAB.h"
43*bf2c3715SXin Li#include "src/IterativeLinearSolvers/IncompleteLUT.h"
44*bf2c3715SXin Li#include "src/IterativeLinearSolvers/IncompleteCholesky.h"
45*bf2c3715SXin Li
46*bf2c3715SXin Li#include "src/Core/util/ReenableStupidWarnings.h"
47*bf2c3715SXin Li
48*bf2c3715SXin Li#endif // EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
49