18T JL(
const int L,
const T x) {
21 if (std::abs(x) < 0.1) {
25 return 1.0 - 0.166666667 * x2 + 0.00833333333 * x4;
30 return 0.333333333 * x - 0.0333333333 * x3 + 0.00119047619 * x5;
35 return 0.0666666667 * x2 - 0.00476190476 * x4 + 0.000132275132 * x6;
41 return 0.00952380952 * x3 - 0.000529100529 * x5 + 0.000012025012 * x7;
47 return 0.00105820106 * x4 - 0.0000481000481 * x6 + 9.25000925e-7 * x8;
52 return (T)gsl_sf_bessel_jl(L, (
double)x);
57T exactGSL_JL(
int L, T x) {
58 return (T)gsl_sf_bessel_jl(L, (
double)x);
65 std::vector<T> Jl_vec;
66 Jl_vec.reserve(xvec.size());
67 for (
const auto &x : xvec) {
68 Jl_vec.push_back(exactGSL_JL(l, x));
74std::vector<T> fillBesselVec_kr(
const int l,
const double k,
75 const std::vector<T> &rvec) {
76 std::vector<T> Jl_vec;
77 Jl_vec.reserve(rvec.size());
78 for (
const auto &r : rvec) {
79 Jl_vec.push_back(JL(l, k * r));
85void fillBesselVec_kr(
int l,
double k,
const std::vector<T> &r,
88 for (std::size_t i = 0; i < r.size(); ++i) {
89 (*jl)[i] = JL(l, k * r[i]);
std::vector< T > fillBesselVec(const int l, const std::vector< T > &xvec)
Creates a vector of Jl(r) for given r.
Definition SphericalBessel.hpp:64