Skip to content

num::chebyshev_preconditioner

Defined in header <linear/solvers/chebyshev.hpp>

template <class Op>
requires math::spd_operator<Op>
class chebyshev_preconditioner final;

Chebyshev polynomial preconditioner \(M^{-1} = p_m(A)\).

Each application costs degree operator applications and allocates nothing. It holds a reference to the operator, which must outlive it. Op must be SPD: this class declares law::spd, which holds only when \(A\) is SPD.

Members

member description
using domain_type = vec<real>
using codomain_type = vec<real>
using laws = law::list<law::spd> Valid only for bounds that enclose the spectrum; see the file comment.
chebyshev_preconditioner(const Op &A, real lo, real hi, idx degree) Build a degree-degree Chebyshev preconditioner for the spectrum \([lo, hi]\).
idx rows() const noexcept
idx cols() const noexcept
idx degree() const noexcept
void apply(const vec<real> &r, vec<real> &z) const Apply \(z \leftarrow p_m(A)\, r\).