#include double f(double x) { // implement the function here return double(1)/(1+x); } double simpson(double a, double b, int n, double _f(double)) { int m = n/2; double x = a, sigma1 = 0, sigma2 = 0; double h = (b-a)/(2*m); for (int i = 1; i < 2*m; i++) { x = a + i*h; if (i%2 != 0) sigma1 += _f(x); else sigma2 += _f(x); } return (h/3)*(_f(a) + _f(b) + 4*sigma1 + 2*sigma2); } int main() { std::cout << simpson(0, 1, 10, f); return 0; }