class Fisher {
public:
Fisher(const double alpha, const double beta)
: alpha_(alpha), beta_(beta) {}
template <class C>
inline typename C::Element_t
operator()(const C& c, int i, int j) const {
return ( alpha_ * c.read(i+1,j ) +
alpha_ * c.read(i ,j+1) +
(1.0 + beta_ - 4*alpha_)* c.read(i ,j ) +
alpha_ * c.read(i ,j-1) +
alpha_ * c.read(i-1,j ) );
}
inline int lowerExtent(int) const { return 1; }
inline int upperExtent(int) const { return 1; }
private:
const double alpha_, beta_;
};
End of Listing