18 lines
461 B
C++
18 lines
461 B
C++
#include <cmath>
|
|
#include <functional>
|
|
#include <vector>
|
|
#include <boost/math/quadrature/gauss_kronrod.hpp>
|
|
|
|
double Struve1(double z) {
|
|
std::function<double(double)> S1 = [z](double tt) {
|
|
return (2.0 / M_PI) * z * std::sqrt(1 - tt * tt) * std::sin(z * tt);
|
|
};
|
|
|
|
auto integrand = [&S1](double x) { return S1(x); };
|
|
|
|
double result = boost::math::quadrature::gauss_kronrod<double, 15>::integrate(integrand, 0.0, 1.0);
|
|
|
|
return result;
|
|
}
|
|
|