Skip to main content

Crate nufast

Crate nufast 

Source
Expand description

§NuFast

Fast and accurate three-flavor neutrino oscillation probabilities in vacuum and matter.

This is a Rust port of NuFast by Peter Denton, based on the algorithm described in arXiv:2405.02400.

§Features

  • Vacuum oscillations: Full 3-flavor PMNS oscillation probabilities
  • Matter effects (MSW): Constant-density matter with arbitrary electron fraction
  • Anti-neutrino mode: Sign-flipped δCP and matter potential
  • CP violation: Full δ_CP phase support
  • Newton refinement: Optional iterative improvement for matter eigenvalues
  • Batch API: VacuumBatch for 45% faster energy spectrum calculations
  • Zero dependencies: Pure Rust, no external crates required
  • WebAssembly: Zig implementation compiles to WASM (see benchmarks/zig/wasm/)

§Quick Start

use nufast::{VacuumParameters, probability_vacuum_lbl};
use std::f64::consts::PI;

let params = VacuumParameters {
    s12sq: 0.307,
    s13sq: 0.0218,
    s23sq: 0.545,
    delta: 1.36 * PI,
    Dmsq21: 7.42e-5,
    Dmsq31: 2.517e-3,
    L: 295.0,
    E: 0.6,
    antineutrino: false,
};

let probs = probability_vacuum_lbl(&params);
assert!(probs[1][0] >= 0.0 && probs[1][0] <= 1.0); // P(νμ → νe)

§Performance

Benchmarks on AMD Ryzen (10M iterations):

LanguageVacuumMatter N=0
Zig SIMD21 ns37 ns
Zig42 ns108 ns
Rust61 ns95 ns
C++49 ns130 ns
WASM80 ns150 ns

Rust is 27% faster than C++ for matter calculations. Zig SIMD achieves 48M vacuum/sec throughput.

Structs§

MatterParameters
Parameters for matter oscillation calculations.
VacuumBatch
Pre-computed vacuum oscillation parameters for batch calculations.
VacuumParameters
Parameters for vacuum oscillation calculations.

Functions§

normalize_probabilities
Clamp all probabilities to [0, 1] and ensure row unitarity.
probability_matter_lbl
Calculate matter oscillation probabilities for long-baseline experiments.
probability_vacuum_lbl
Calculate vacuum oscillation probabilities for long-baseline experiments.

Type Aliases§

ProbabilityMatrix
3×3 probability matrix type.