10 #ifndef EIGEN_SPARSESOLVERBASE_H
11 #define EIGEN_SPARSESOLVERBASE_H
24 template <
typename Decomposition,
typename Rhs,
typename Dest>
26 const Decomposition& dec,
const Rhs& rhs, Dest& dest) {
30 static const Index NbColsAtOnce = 4;
31 Index rhsCols = rhs.cols();
37 for (
Index k = 0;
k < rhsCols;
k += NbColsAtOnce) {
38 Index actualCols = std::min<Index>(rhsCols -
k, NbColsAtOnce);
39 tmp.leftCols(actualCols) = rhs.middleCols(
k, actualCols);
40 tmpX.leftCols(actualCols) = dec.solve(
tmp.leftCols(actualCols));
41 dest.middleCols(
k, actualCols) = tmpX.leftCols(actualCols).sparseView();
46 template <
typename Decomposition,
typename Rhs,
typename Dest>
48 const Decomposition& dec,
const Rhs& rhs, Dest& dest) {
53 dest_dense = dec.solve(rhs_dense);
54 dest = dest_dense.sparseView();
66 template <
typename Derived>
76 Derived&
derived() {
return *
static_cast<Derived*
>(
this); }
77 const Derived&
derived()
const {
return *
static_cast<const Derived*
>(
this); }
83 template <
typename Rhs>
94 template <
typename Rhs>
101 #ifndef EIGEN_PARSED_BY_DOXYGEN
103 template <
typename Rhs,
typename Dest>
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STATIC_ASSERT(X, MSG)
Definition: StaticAssert.h:26
int rows
Definition: Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
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
Pseudo expression representing a solving operation.
Definition: Solve.h:62
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
SparseSolverBase(SparseSolverBase &&other)
Definition: SparseSolverBase.h:72
const Solve< Derived, Rhs > solve(const SparseMatrixBase< Rhs > &b) const
Definition: SparseSolverBase.h:95
const Solve< Derived, Rhs > solve(const MatrixBase< Rhs > &b) const
Definition: SparseSolverBase.h:84
void _solve_impl(const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
Definition: SparseSolverBase.h:104
SparseSolverBase()
Definition: SparseSolverBase.h:70
~SparseSolverBase()
Definition: SparseSolverBase.h:74
bool m_isInitialized
Definition: SparseSolverBase.h:110
Derived & derived()
Definition: SparseSolverBase.h:76
const Derived & derived() const
Definition: SparseSolverBase.h:77
EIGEN_DEVICE_FUNC noncopyable()
Definition: Meta.h:286
#define min(a, b)
Definition: datatypes.h:22
const unsigned int RowMajorBit
Definition: Constants.h:70
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
std::enable_if_t< Rhs::ColsAtCompileTime !=1 &&Dest::ColsAtCompileTime !=1 > solve_sparse_through_dense_panels(const Decomposition &dec, const Rhs &rhs, Dest &dest)
Definition: SparseSolverBase.h:25
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Definition: Eigen_Colamd.h:49