10 #ifndef EIGEN_ITERATIVE_SOLVER_BASE_H
11 #define EIGEN_ITERATIVE_SOLVER_BASE_H
20 template <
typename MatrixType>
23 template <
typename T0>
47 template <
typename MatrixType>
56 template <
typename MatrixType>
61 struct ConstSelfAdjointViewReturnType {
65 enum { MatrixFree =
false };
69 template <
typename InputType>
74 template <
typename MatrixDerived>
93 template <
typename MatrixType>
98 struct ConstSelfAdjointViewReturnType {
102 enum { MatrixFree =
true };
123 template <
typename Derived>
154 template <
typename MatrixDerived>
169 template <
typename MatrixDerived>
189 template <
typename MatrixDerived>
209 template <
typename MatrixDerived>
280 template <
typename Rhs,
typename Guess>
294 template <
typename Rhs,
typename DestDerived>
300 DestDerived& dest(aDest.
derived());
307 typename DestDerived::PlainObject
tmp(
cols(), rhsCols);
309 for (
Index k = 0;
k < rhsCols; ++
k) {
312 derived()._solve_vector_with_guess_impl(tb, tx);
313 tmp.col(
k) = tx.sparseView(0);
326 template <
typename Rhs,
typename DestDerived>
332 DestDerived& dest(aDest.derived());
334 for (
Index k = 0;
k < rhsCols; ++
k) {
335 typename DestDerived::ColXpr xk(dest,
k);
336 typename Rhs::ConstColXpr bk(
b,
k);
337 derived()._solve_vector_with_guess_impl(bk, xk);
349 template <
typename Rhs,
typename DestDerived>
352 derived()._solve_vector_with_guess_impl(
b, dest.derived());
356 template <
typename Rhs,
typename Dest>
376 template <
typename InputType>
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
#define EIGEN_NOEXCEPT
Definition: Macros.h:1267
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define eigen_assert(x)
Definition: Macros.h:910
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
Base class for linear iterative solvers.
Definition: IterativeSolverBase.h:124
internal::generic_matrix_wrapper< MatrixType > MatrixWrapper
Definition: IterativeSolverBase.h:371
bool m_analysisIsOk
Definition: IterativeSolverBase.h:390
IterativeSolverBase()
Definition: IterativeSolverBase.h:142
ComputationInfo info() const
Definition: IterativeSolverBase.h:288
bool m_factorizationIsOk
Definition: IterativeSolverBase.h:390
std::enable_if_t< Rhs::ColsAtCompileTime==1||DestDerived::ColsAtCompileTime==1 > _solve_with_guess_impl(const Rhs &b, MatrixBase< DestDerived > &dest) const
Definition: IterativeSolverBase.h:350
RealScalar error() const
Definition: IterativeSolverBase.h:270
Derived & factorize(const EigenBase< MatrixDerived > &A)
Definition: IterativeSolverBase.h:190
Index maxIterations() const
Definition: IterativeSolverBase.h:251
IterativeSolverBase(IterativeSolverBase &&)=default
internal::traits< Derived >::MatrixType MatrixType
Definition: IterativeSolverBase.h:130
ComputationInfo m_info
Definition: IterativeSolverBase.h:389
@ MaxColsAtCompileTime
Definition: IterativeSolverBase.h:136
@ ColsAtCompileTime
Definition: IterativeSolverBase.h:136
IterativeSolverBase(const EigenBase< MatrixDerived > &A)
Definition: IterativeSolverBase.h:155
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: IterativeSolverBase.h:221
Derived & analyzePattern(const EigenBase< MatrixDerived > &A)
Definition: IterativeSolverBase.h:170
MatrixWrapper::ActualMatrixType ActualMatrixType
Definition: IterativeSolverBase.h:372
MatrixType::RealScalar RealScalar
Definition: IterativeSolverBase.h:134
void grab(const InputType &A)
Definition: IterativeSolverBase.h:377
Preconditioner & preconditioner()
Definition: IterativeSolverBase.h:242
MatrixType::Scalar Scalar
Definition: IterativeSolverBase.h:132
MatrixWrapper m_matrixWrapper
Definition: IterativeSolverBase.h:381
const Preconditioner & preconditioner() const
Definition: IterativeSolverBase.h:245
internal::traits< Derived >::Preconditioner Preconditioner
Definition: IterativeSolverBase.h:131
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: IterativeSolverBase.h:224
Derived & compute(const EigenBase< MatrixDerived > &A)
Definition: IterativeSolverBase.h:210
void init()
Definition: IterativeSolverBase.h:363
RealScalar m_error
Definition: IterativeSolverBase.h:387
void _solve_impl(const Rhs &b, Dest &x) const
Definition: IterativeSolverBase.h:357
Preconditioner m_preconditioner
Definition: IterativeSolverBase.h:382
MatrixType::StorageIndex StorageIndex
Definition: IterativeSolverBase.h:133
void _solve_with_guess_impl(const Rhs &b, SparseMatrixBase< DestDerived > &aDest) const
Definition: IterativeSolverBase.h:295
~IterativeSolverBase()
Definition: IterativeSolverBase.h:162
SparseSolverBase< Derived > Base
Definition: IterativeSolverBase.h:126
Index m_iterations
Definition: IterativeSolverBase.h:388
Index m_maxIterations
Definition: IterativeSolverBase.h:384
Derived & setTolerance(const RealScalar &tolerance)
Definition: IterativeSolverBase.h:236
bool m_isInitialized
Definition: SparseSolverBase.h:110
std::enable_if_t< Rhs::ColsAtCompileTime !=1 &&DestDerived::ColsAtCompileTime !=1 > _solve_with_guess_impl(const Rhs &b, MatrixBase< DestDerived > &aDest) const
Definition: IterativeSolverBase.h:327
RealScalar tolerance() const
Definition: IterativeSolverBase.h:229
RealScalar m_tolerance
Definition: IterativeSolverBase.h:385
Derived & derived()
Definition: SparseSolverBase.h:76
const SolveWithGuess< Derived, Rhs, Guess > solveWithGuess(const MatrixBase< Rhs > &b, const Guess &x0) const
Definition: IterativeSolverBase.h:281
Index iterations() const
Definition: IterativeSolverBase.h:262
const ActualMatrixType & matrix() const
Definition: IterativeSolverBase.h:374
Derived & setMaxIterations(Index maxIters)
Definition: IterativeSolverBase.h:256
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
A matrix or vector expression mapping an existing expression.
Definition: Ref.h:264
Pseudo expression representing a solving operation.
Definition: SolveWithGuess.h:19
Base class of any sparse matrices or sparse expressions.
Definition: SparseMatrixBase.h:30
const Derived & derived() const
Definition: SparseMatrixBase.h:144
A base class for sparse solvers.
Definition: SparseSolverBase.h:67
bool m_isInitialized
Definition: SparseSolverBase.h:110
Derived & derived()
Definition: SparseSolverBase.h:76
generic_matrix_wrapper()
Definition: IterativeSolverBase.h:67
generic_matrix_wrapper(const InputType &mat)
Definition: IterativeSolverBase.h:70
Ref< const MatrixType > ActualMatrixType
Definition: IterativeSolverBase.h:59
void grab(const EigenBase< MatrixDerived > &mat)
Definition: IterativeSolverBase.h:75
MatrixType m_dummy
Definition: IterativeSolverBase.h:88
void grab(const Ref< const MatrixType > &mat)
Definition: IterativeSolverBase.h:80
const ActualMatrixType & matrix() const
Definition: IterativeSolverBase.h:72
ActualMatrixType m_matrix
Definition: IterativeSolverBase.h:89
const ActualMatrixType & matrix() const
Definition: IterativeSolverBase.h:108
void grab(const MatrixType &mat)
Definition: IterativeSolverBase.h:110
generic_matrix_wrapper(const MatrixType &mat)
Definition: IterativeSolverBase.h:106
MatrixType ActualMatrixType
Definition: IterativeSolverBase.h:96
const ActualMatrixType * mp_matrix
Definition: IterativeSolverBase.h:113
generic_matrix_wrapper()
Definition: IterativeSolverBase.h:104
Definition: IterativeSolverBase.h:53
ComputationInfo
Definition: Constants.h:438
@ NumericalIssue
Definition: Constants.h:442
@ Success
Definition: Constants.h:440
@ NoConvergence
Definition: Constants.h:444
char char char int int * k
Definition: level2_impl.h:374
Eigen::Matrix< Scalar, Dynamic, Dynamic, ColMajor > tmp
Definition: level3_impl.h:365
@ Rhs
Definition: TensorContractionMapper.h:20
EIGEN_DEVICE_FUNC T * construct_at(T *p, Args &&... args)
Definition: Memory.h:1321
EIGEN_DEVICE_FUNC void destroy_at(T *p)
Definition: Memory.h:1335
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Vector< double > x0(2, 0.0)
Definition: Eigen_Colamd.h:49
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43
list x
Definition: plotDoE.py:28
Definition: EigenBase.h:33
ActualMatrixType::template ConstSelfAdjointViewReturnType< UpLo >::Type Type
Definition: IterativeSolverBase.h:62
ActualMatrixType Type
Definition: IterativeSolverBase.h:99
Definition: IterativeSolverBase.h:24
any_conversion(const volatile T &)
Definition: IterativeSolverBase.h:33
int a[2]
Definition: IterativeSolverBase.h:34
Definition: IterativeSolverBase.h:30
int a[1]
Definition: IterativeSolverBase.h:31
Definition: IterativeSolverBase.h:21
@ value
Definition: IterativeSolverBase.h:44
static yes test(const Ref< const T > &, int)
static no test(any_conversion< T >,...)
static MatrixType ms_from
Definition: IterativeSolverBase.h:43
Definition: IterativeSolverBase.h:48
Definition: ForwardDeclarations.h:21