namespace ietl {The

template <class MATRIX, class GEN, class IT, class VS>

std::pair<typename vectorspace_traits<VS>::magnitude_type,

typename vectorspace_traits<VS>::vector_type>

inverse(const MATRIX& matrix, GEN& gen, const SOLVER& solver, ITER& iter,

typename vectorspace_traits<VS>::magnitude_type sigma,

const VS& vec);

}

- The matrix
`m` - A generator
`start`which is used to create the starting vector of the iteration - a linear solver
`solver`, discussed in detail below

- The iteration control object
`iter` - The initial guess for an eigenvalue
`sigma`

- The vector space object
`vec`

Given the `matrix` of which an eigenvalue is desired, the
initial guess `sigma`, and a right hand side `v`, the solution
`y` needs to be calculated in a fast way. This part of the code is
time-critical as it is called at each iteration. To solve above equation, a
function object `solver` needs to be passed, which is called as

`inverse`. This
can (and should) be used by the solver to optimize the calculation.

If` (matrix - sigma * I)` is singular an exception should be
thrown which will terminate the iterations.

solver(matrix,sigma,v,y)The first two arguments stay the same throughout the iteration and are the same as passed to

If