60 make(
double gamma_val)
noexcept {
91[[nodiscard]] std::vector<srfm::momentum::BetaVelocity>
93 double& running_max)
noexcept;
108[[nodiscard]] std::vector<srfm::momentum::LorentzFactor>
109computeGammaBatch(
const std::vector<srfm::momentum::BetaVelocity>& betas)
noexcept;
148 [[nodiscard]] std::vector<srfm::momentum::BetaVelocity>
159 [[nodiscard]] std::vector<srfm::momentum::LorentzFactor>
161 const std::vector<srfm::momentum::BetaVelocity>& betas)
noexcept;
169 void reset()
noexcept;
178 double running_max_{ 0.0 };
Pre-computed Lorentz factor γ = 1/√(1−β²). Always ≥ 1.0.
Stateful wrapper around computeBetaBatch / computeGammaBatch.
std::vector< srfm::momentum::LorentzFactor > computeGammaBatch(const std::vector< srfm::momentum::BetaVelocity > &betas) noexcept
Compute γ_i = 1/√(1 − β_i²) for a batch of betas.
void reset() noexcept
Reset the running maximum to 0.0.
std::vector< srfm::momentum::BetaVelocity > computeBetaBatch(const std::vector< double > &velocities) noexcept
Compute β_i = |v_i| / running_max for a batch of velocities.
SimdLevel simd_level() const noexcept
Returns the SIMD level selected for this process.
double running_max() const noexcept
Returns the current running maximum (read-only).
BetaCalculator() noexcept
Construct a fresh calculator. running_max starts at 0.0.
Runtime SIMD capability detection for the SRFM acceleration layer.
std::vector< srfm::momentum::LorentzFactor > computeGammaBatch(const std::vector< srfm::momentum::BetaVelocity > &betas) noexcept
Compute γ_i = 1/√(1 − β_i²) for every element.
SimdLevel
Ordered enumeration of SIMD capability tiers.
@ SCALAR
No SIMD; pure scalar C++ path.
std::vector< srfm::momentum::BetaVelocity > computeBetaBatch(const std::vector< double > &velocities, double &running_max) noexcept
Momentum-Velocity Signal Processor (AGT-03 / SRFM)
Internal factory helper for constructing LorentzFactor objects from pre-computed gamma scalars (frien...
static srfm::momentum::LorentzFactor make(double gamma_val) noexcept