
namespace Eigen {

/**

\eigenManualPage MatrixfreeSolverExample Matrix-free solvers

Iterative solvers such as ConjugateGradient and BiCGSTAB can be used in a matrix free context. To this end, user must provide a wrapper class inheriting EigenBase<> and implementing the following methods:
 - Index rows() and Index cols(): returns number of rows and columns respectively
 - operator* with and %Eigen dense column vector (its actual implementation goes in a specialization of the internal::generic_product_impl class)

Eigen::internal::traits<> must also be specialized for the wrapper type.

Here is a complete example wrapping a Eigen::SparseMatrix:
\include matrixfree_cg.cpp
Output: \verbinclude matrixfree_cg.out

*/

}