54 throw Elements::Exception() <<
"Simpson's Rule integration with recursion is define only for order bigger than 3";
57 int N =
pow(2, order);
58 double h = (max - min) / N;
60 double partial_sum = 0;
62 for (
int j = 1; j < N / 2 - 1; j++) {
64 partial_sum += function(min + i * h);
67 partial_sum += 7. * (function(min + h) + function(max - h)) / 6.;
68 partial_sum -= 5. * (function(min + 2. * h) + function(max - 2. * h)) / 24.;
69 partial_sum += (function(min + 4. * h) + function(max - 4. * h)) / 24.;
70 return partial_sum * h + previous_value / 2.;