10 #ifndef EIGEN_SPARSE_SOLVE_H 11 #define EIGEN_SPARSE_SOLVE_H 20 template<
typename DecompositionType,
typename Rhs>
23 typedef typename DecompositionType::MatrixType MatrixType;
28 :
public ReturnByValue<sparse_solve_retval_base<_DecompositionType, Rhs> >
31 typedef _DecompositionType DecompositionType;
33 typedef typename Base::Index Index;
36 : m_dec(dec), m_rhs(rhs)
39 inline Index rows()
const {
return m_dec.cols(); }
40 inline Index cols()
const {
return m_rhs.cols(); }
41 inline const DecompositionType& dec()
const {
return m_dec; }
42 inline const RhsNestedCleaned& rhs()
const {
return m_rhs; }
44 template<
typename Dest>
inline void evalTo(Dest& dst)
const 50 template<
typename DestScalar,
int DestOptions,
typename DestIndex>
54 static const int NbColsAtOnce = 4;
55 int rhsCols = m_rhs.cols();
56 int size = m_rhs.rows();
59 for(
int k=0; k<rhsCols; k+=NbColsAtOnce)
61 int actualCols = std::min<int>(rhsCols-k, NbColsAtOnce);
62 tmp.leftCols(actualCols) = m_rhs.middleCols(k,actualCols);
63 tmpX.leftCols(actualCols) = m_dec.solve(tmp.leftCols(actualCols));
64 dst.
middleCols(k,actualCols) = tmpX.leftCols(actualCols).sparseView();
67 const DecompositionType& m_dec;
68 typename Rhs::Nested m_rhs;
71 #define EIGEN_MAKE_SPARSE_SOLVE_HELPERS(DecompositionType,Rhs) \ 72 typedef typename DecompositionType::MatrixType MatrixType; \ 73 typedef typename MatrixType::Scalar Scalar; \ 74 typedef typename MatrixType::RealScalar RealScalar; \ 75 typedef typename MatrixType::Index Index; \ 76 typedef Eigen::internal::sparse_solve_retval_base<DecompositionType,Rhs> Base; \ 81 sparse_solve_retval(const DecompositionType& dec, const Rhs& rhs) \ 88 template<
typename DecompositionType,
typename Rhs,
typename Guess>
91 typedef typename DecompositionType::MatrixType MatrixType;
93 MatrixType::ColsAtCompileTime,
94 Rhs::ColsAtCompileTime,
95 Rhs::PlainObject::Options,
96 MatrixType::MaxColsAtCompileTime,
101 :
public ReturnByValue<solve_retval_with_guess<DecompositionType, Rhs, Guess> >
103 typedef typename DecompositionType::Index Index;
106 : m_dec(dec), m_rhs(rhs), m_guess(guess)
109 inline Index rows()
const {
return m_dec.cols(); }
110 inline Index cols()
const {
return m_rhs.cols(); }
112 template<
typename Dest>
inline void evalTo(Dest& dst)
const 115 m_dec._solveWithGuess(m_rhs,dst);
119 const DecompositionType& m_dec;
120 const typename Rhs::Nested m_rhs;
121 const typename Guess::Nested m_guess;
128 #endif // EIGEN_SPARSE_SOLVE_H Definition: gtest_unittest.cc:5031
A versatible sparse matrix representation.
Definition: SparseMatrix.h:85
iterative scaling algorithm to equilibrate rows and column norms in matrices
Definition: TestIMU_Common.h:87
Definition: SparseSolve.h:18
Definition: ReturnByValue.h:50
detail::size< coerce_list< Ts... >> size
Get the size of a list (number of elements.)
Definition: Size.h:56
Definition: SparseSolve.h:86
ColsBlockXpr middleCols(Index startCol, Index numCols)
Definition: SparseMatrixBase.h:624
Definition: BandTriangularSolver.h:13
Definition: SparseSolve.h:17
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:127
Definition: ForwardDeclarations.h:17
double Scalar
Common scalar type.
Definition: FlexibleKalmanBase.h:48