25 #ifndef EIGEN_BASIC_PRECONDITIONERS_H
26 #define EIGEN_BASIC_PRECONDITIONERS_H
47 template <
typename _Scalar>
50 typedef _Scalar Scalar;
59 template<
typename MatrixType>
68 template<
typename MatrixType>
74 template<
typename MatrixType>
78 for(
int j=0; j<mat.outerSize(); ++j)
80 typename MatrixType::InnerIterator it(mat,j);
81 while(it && it.index()!=j) ++it;
82 if(it && it.index()==j)
91 template<
typename MatrixType>
97 template<
typename Rhs,
typename Dest>
98 void _solve(
const Rhs& b, Dest& x)
const
103 template<
typename Rhs>
inline const internal::solve_retval<DiagonalPreconditioner, Rhs>
108 &&
"DiagonalPreconditioner::solve(): invalid number of rows of the right hand side matrix b");
109 return internal::solve_retval<DiagonalPreconditioner, Rhs>(*
this, b.derived());
119 template<
typename _MatrixType,
typename Rhs>
120 struct solve_retval<DiagonalPreconditioner<_MatrixType>, Rhs>
121 : solve_retval_base<DiagonalPreconditioner<_MatrixType>, Rhs>
126 template<
typename Dest>
void evalTo(Dest& dst)
const
128 dec()._solve(rhs(),dst);
145 template<
typename MatrixType>
148 template<
typename MatrixType>
151 template<
typename MatrixType>
154 template<
typename MatrixType>
157 template<
typename Rhs>
158 inline const Rhs&
solve(
const Rhs& b)
const {
return b; }
163 #endif // EIGEN_BASIC_PRECONDITIONERS_H