1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! Deterministic computation module for networked physics applications
//!
//! Provides bit-exact reproducibility across platforms (x86-64, ARM64, WASM32)
//! and compiler optimization levels for networked physics simulations.
//!
//! # Overview
//!
//! Standard IEEE 754 floating-point has platform-specific behaviors that break
//! determinism in networked applications. This module provides deterministic
//! alternatives through:
//!
//! - Fixed-iteration algorithms (no early termination)
//! - Disabled FMA (fused multiply-add) instructions
//! - Polynomial approximations for transcendentals
//!
//! # Performance
//!
//! Deterministic operations are ~10-20% slower than native f32 due to disabled
//! optimizations. For non-networked applications, use the standard types.
//!
//! # Example
//!
//! ```
//! # #[cfg(feature = "deterministic")]
//! # {
//! use amari::deterministic::*;
//! use amari::deterministic::ga2d::*;
//!
//! // Create deterministic ship orientation
//! let mut rotation = DetRotor2::IDENTITY;
//!
//! // Rotate by fixed amount (bit-exact on all platforms)
//! let delta = DetRotor2::from_angle(DetF32::from_f32(0.1));
//! rotation = rotation * delta;
//!
//! // Transform vectors
//! let thrust_dir = rotation.transform(DetVector2::X_AXIS);
//! # }
//! ```
// Extends scalar with trig functions
// Re-export primary types
pub use ;
pub use ;