Eu tenho minha própria pequena sub-rotina para integração numérica (quadratura), que é uma adaptação em C ++ de um programa ALGOL publicado por Bulirsch & Stoer em 1967 (Numerische Mathematik, 9, 271-278).
Gostaria de atualizar para um algoritmo (adaptável) mais moderno e me pergunto se existem bibliotecas C ++ (gratuitas) que as fornecem. Eu olhei como GSL (que é C), mas isso vem com uma API horrível (embora os números possam ser bons). Mais alguma coisa?
Uma API útil seria assim:
double quadrature(double lower_integration_limit,
double upper_integration_limit,
std::function<double(double)> const&func,
double desired_error_bound_relative=1.e-12,
double desired_error_bound_absolute=0,
double*error_estimate=nullptr);
gsl_function
é um ponteiro de função junto com algum ponteiro de dados opaco, que pode conter seu estado. Segundo, existem algumas preocupações de eficiência quanto à (re) alocação de buffers de trabalho arbitrariamente grandes, para que parte tenha pelo menos alguma justificativa válida.