25 #ifndef EIGEN_ITERATIVE_SOLVER_BASE_H
26 #define EIGEN_ITERATIVE_SOLVER_BASE_H
35 template<
typename Derived>
39 typedef typename internal::traits<Derived>::MatrixType
MatrixType;
41 typedef typename MatrixType::Scalar
Scalar;
42 typedef typename MatrixType::Index
Index;
47 Derived&
derived() {
return *
static_cast<Derived*
>(
this); }
48 const Derived&
derived()
const {
return *
static_cast<const Derived*
>(
this); }
181 template<
typename Rhs>
inline const internal::solve_retval<Derived, Rhs>
186 &&
"IterativeSolverBase::solve(): invalid number of rows of the right hand side matrix b");
187 return internal::solve_retval<Derived, Rhs>(
derived(), b.derived());
194 template<
typename Rhs>
195 inline const internal::sparse_solve_retval<IterativeSolverBase, Rhs>
200 &&
"IterativeSolverBase::solve(): invalid number of rows of the right hand side matrix b");
201 return internal::sparse_solve_retval<IterativeSolverBase, Rhs>(*
this, b.
derived());
212 template<
typename Rhs,
typename DestScalar,
int DestOptions,
typename DestIndex>
217 int rhsCols = b.cols();
221 for(
int k=0; k<rhsCols; ++k)
252 template<
typename Derived,
typename Rhs>
253 struct sparse_solve_retval<IterativeSolverBase<Derived>, Rhs>
254 : sparse_solve_retval_base<IterativeSolverBase<Derived>, Rhs>
259 template<
typename Dest>
void evalTo(Dest& dst)
const
261 dec().derived()._solve_sparse(rhs(),dst);
269 #endif // EIGEN_ITERATIVE_SOLVER_BASE_H