#include "hep/mc.hpp"
#include <cstddef>
#include <iostream>
#include <vector>
double x_max = 5.0;
double x_min = -5.0;
double arctan(
) {
double const x_range = x_max - x_min;
double const projection = x_range * point.
point()[0] + x_min;
double const value = std::atan(projection);
projector.
add(0, projection, value);
return value;
}
int main()
{
auto integrand = hep::make_integrand<double>(
arctan,
1,
);
auto const chkpt =
hep::plain(integrand, std::vector<std::size_t>(1, 1000000));
auto const result = chkpt.results().back();
std::cout << "integral is I = " << result.value() << " +- " << result.error() << "\n\n";
auto const& distribution = result.distributions()[0];
for (std::size_t i = 0; i != mid_points.size(); ++i)
{
std::cout << mid_points[i] << "\t"
<< distribution.results()[i].value() << "\t"
<< distribution.results()[i].error() << "\n";
}
}