SymBoltz.jl is a Julia package for solving the linear Einstein-Boltzmann equations in cosmology. It is:
- Symbolic-numeric: Models are specified with symbolic equations in a simple, convenient and extensible high-level format, then automatically compiled to fast numerical functions that are solved.
- Approximation-free: Full equations are solved at all times without tight-coupling, ultrarelativistic fluid and radiation-streaming approximations (TCA, UFA and RSA) using efficient implicit ODE integrators.
- Differentiable: Get derivatives of any output (e.g. power spectra) with respect to any input (e.g. cosmological parameters) using automatic differentiation (exact to numerical precision and does not need step size tuning).
Install Julia, launch julia
and run:
using Pkg; Pkg.add("SymBoltz")
Visit the documentation pages to get started with tutorials and examples.

If you use SymBoltz in your work, please cite this paper:
@article{SymBoltz,
title = {{SymBoltz.jl}: a symbolic-numeric, approximation-free and differentiable linear {Einstein-Boltzmann} solver},
author = {Herman Sletmoen},
year = {2025},
journal = {arXiv},
eprint = {2509.24740},
archiveprefix = {arXiv},
primaryclass = {astro-ph.CO},
doi = {10.48550/arXiv.2509.24740},
url = {http://arxiv.org/abs/2509.24740},
}