This package works in Planck units, i.e.
$c = ħ = ϵ₀ = k_B = 1$
G ≠ 1.
Conventionally, any scalar function of time, such as
\eta, takes as input the logarithm of the scale factor
x ≡ log(a). Any scalar function of time which does not operate on
x must be marked with an underscore for the variable it does take, for example
peebles_Xₑ(par, Xₑ₀, x_start, x_end)
Solve the Peebles equation over a span of scale factors, and then construct an interpolator mapping scale factor to the resulting ionization fraction.
par: cosmological parameters
Xₑ₀: initial ionization fraction
x_start: scale factor to begin integration
x_end: scale factor to end integration
generic function: interpolator for Xₑ(x)
Utility function for generating a decent approximation to Xₑ in ΛCDM recombination, using the Saha equation until z=1587.4 and then the Peebles equation for the rest.