amari_dual/
lib.rs

1//! Dual number automatic differentiation for efficient gradient computation
2//!
3//! Dual numbers extend real numbers with an infinitesimal unit ε where ε² = 0.
4//! This allows for exact computation of derivatives without numerical approximation
5//! or computational graphs, making it ideal for forward-mode automatic differentiation.
6
7#![cfg_attr(not(feature = "std"), no_std)]
8
9extern crate alloc;
10
11// Import precision types from amari-core
12#[cfg(feature = "high-precision")]
13pub use amari_core::HighPrecisionFloat;
14pub use amari_core::{ExtendedFloat, PrecisionFloat, StandardFloat};
15
16// Core dual number types
17pub mod types;
18
19// Domain modules
20pub mod error;
21pub mod functions;
22pub mod multivector;
23
24#[cfg(feature = "phantom-types")]
25pub mod verified;
26
27#[cfg(feature = "contracts")]
28pub mod verified_contracts;
29
30// Re-export error types
31pub use error::{DualError, DualResult};
32
33// Re-export core types
34pub use multivector::{DualMultivector, MultiDualMultivector};
35pub use types::{DualNumber, MultiDualNumber, StandardDual, StandardMultiDual};
36
37#[cfg(feature = "high-precision")]
38pub use types::{ExtendedDual, ExtendedMultiDual};
39
40// GPU acceleration exports