44double hzeta(
double order,
double x);
86std::pair<double, double>
LPK01(
double x);
93 assert(not series.empty());
94 auto const value = std::accumulate(
95 series.rbegin(), series.rend(), 0.,
96 [x](
auto const &acc,
auto const &coeff) { return acc * x + coeff; });
105 assert(series.size() >= 3);
107 auto const *c = series.data();
108 auto const x2 = 2.0 * x;
109 auto dd = c[series.size() - 1];
110 auto d = x2 * dd + c[series.size() - 2];
111 for (
auto j =
static_cast<int>(series.size()) - 3; j >= 1; j--) {
113 d = x2 * d - dd + c[j];
116 return x * d - dd + 0.5 * c[0];
double LPK1(double x)
Modified Bessel function of second kind, order 1, low precision.
std::pair< double, double > LPK01(double x)
Modified Bessel functions of second kind, order 0 and 1, low precision.
double K1(double x)
Modified Bessel function of second kind, order 1.
double evaluateAsChebychevSeriesAt(std::span< const double > series, double x)
Evaluate the polynomial interpreted as a Chebychev series.
double hzeta(double order, double x)
Hurwitz zeta function.
double evaluateAsTaylorSeriesAt(std::span< const double > series, double x)
Evaluate the polynomial interpreted as a Taylor series via the Horner scheme.
double K0(double x)
Modified Bessel function of second kind, order 0.
double LPK0(double x)
Modified Bessel function of second kind, order 0, low precision.