3template<
typename Callable>
4auto romberg_diff(Callable& func,
double x, std::size_t order=2,
double h=0.1){
7 auto r = Eigen::ArrayXd(order, order);
10 for (
auto i = 0; i < order; ++i){
11 r(i, 0) = (func(x + h) - func(x - h)) / (2 * h);
16 for (
auto i = 1; i < order; ++i){
17 for (
auto j = i; j < order; ++j){
18 double fouri = pow(4, i);
19 r(j, i) = (fouri * r(j, i-1) - r(j-1, i-1)) / (fouri - 1);
23 return r(order - 1, order - 1);