bessels.f90 File Source

CAMB flat spherical Bessel function routines
June 2026: updated bjl, accurate to peak-normalized fraction <7e-6 at L>=28
(max ~9e-6 at BJL_recurrence_MAX_L+1, ~1.5e-6 at high L), pre-splining.
Spline table accurate to 2e-4 in tail, better round peak.
Tolerance note: first positive peak of spherical Bessel function j_l(x), l >= 1:
nu = l + 1/2
x_peak ~ nu + 0.80861652*nu^(1/3) - 0.23669965*nu^(-1/3) - 0.20430105*nu^(-1)
A_peak ~ 0.845843*nu^(-5/6)*(1 - 0.55424*nu^(-2/3) + 0.25865*nu^(-4/3))
where A_peak = j_l(x_peak); max relative error < 0.7%, better at high l.

Modules

Dependencies

Subroutines
  • BJL_external(L, X, JL)
    External-linkage wrapper around FlatBessels::bjl, for callers (e.g. results.f90) that declare it `external` rather than `use FlatBessels`, to avoid a circular module dependency.
    • integer  :: L
    • real(dl)  :: X
    • real(dl)  :: JL