sidereon_core/estimation/mod.rs
1//! GNSS estimation substrate (Phase-2).
2//!
3//! The Phase-2 redesign collapses the three thick estimator stacks
4//! (`spp`, `rtk`/`rtk_filter`, `precise_positioning`) onto one shared estimation
5//! substrate plus thin, runtime-selectable strategies. The mechanism that keeps
6//! every external reference bit-exact through the migration is the NAMED recipe:
7//! a strategy selects the floating-point operation order it needs by enum value,
8//! never by owning a private copy of a parity-sensitive helper.
9//!
10//! P0 landed [`recipe`] - the taxonomy of operation-order variants, each
11//! documented against the current code path it names and defaulting to current
12//! behavior. P1 adds [`substrate`] with the frame and range kernels; P2 adds the
13//! parameter layout, the weighted measurement row, the measurement covariance
14//! block, and the normal-equation assembler; P3 adds the shared ambiguity and qc
15//! kernels, all routed through by the existing strategies via their current
16//! recipe. P4 adds [`strategies`]: the runtime [`StrategyId`] selector
17//! ([`strategies::estimate`]) that resolves a strategy into its recipe and
18//! screen/ambiguity policy data and dispatches to the technique's reference
19//! entry point, leaving every existing 0-ULP golden unchanged.
20
21pub mod primitives;
22pub mod recipe;
23pub mod strategies;
24pub(crate) mod substrate;
25
26pub use primitives::{
27 alpha_beta_apply_measurement, alpha_beta_filter_step, alpha_beta_predict,
28 alpha_beta_steady_state_gains, cfar_ca_false_alarm_probability, cfar_ca_multiplier_from_pfa,
29 cfar_ca_pfa_from_multiplier, cfar_ca_threshold, ewma_update, ewma_update_power_of_two,
30 kalman_cv_steady_state_gains, mad_spread, nis_expected_value, nis_gate_test,
31 nis_gate_threshold, nis_statistic, normalized_innovation, AlphaBetaGains, AlphaBetaState,
32 AlphaBetaStep, PrimitiveError, ScalarKalmanGains, MAD_GAUSSIAN_CONSISTENCY,
33};
34pub use recipe::{
35 AmbiguityIdPolicy, DifferencingMode, EstimationRecipe, FrameRecipe, NormalRecipe,
36 PartialResolution, RangeRecipe, ReferenceTarget, ResidualNormRecipe, SagnacRecipe, ScreenKind,
37 SolverRecipe, StrategyId, Technique,
38};
39pub use strategies::{
40 estimate, EstimateError, EstimateInput, EstimateOptions, EstimateOutput, ResolvedStrategy,
41};