1pub use amari_automata as automata;
22pub use amari_core as core;
23pub use amari_dual as dual;
24pub use amari_enumerative as enumerative;
25pub use amari_fusion as fusion;
26pub use amari_info_geom as info_geom;
27pub use amari_network as network;
28pub use amari_relativistic as relativistic;
29pub use amari_tropical as tropical;
30
31#[cfg(feature = "measure")]
32pub use amari_measure as measure;
33
34#[cfg(feature = "calculus")]
35pub use amari_calculus as calculus;
36
37#[cfg(feature = "holographic")]
38pub use amari_holographic as holographic;
39
40#[cfg(feature = "probabilistic")]
41pub use amari_probabilistic as probabilistic;
42
43#[cfg(feature = "functional")]
44pub use amari_functional as functional;
45
46#[cfg(feature = "topology")]
47pub use amari_topology as topology;
48
49#[cfg(feature = "flynn")]
50pub use amari_flynn as flynn;
51
52#[cfg(feature = "gpu")]
53pub use amari_gpu as gpu;
54
55#[cfg(feature = "optimization")]
56pub use amari_optimization as optimization;
57
58#[cfg(feature = "deterministic")]
60pub mod deterministic;
61
62use thiserror::Error;
63
64#[derive(Error, Debug)]
66pub enum AmariError {
67 #[error(transparent)]
69 Core(#[from] amari_core::CoreError),
70
71 #[error("{0}")]
73 Automata(amari_automata::AutomataError),
74
75 #[error(transparent)]
77 Enumerative(#[from] amari_enumerative::EnumerativeError),
78
79 #[cfg(feature = "gpu")]
81 #[error(transparent)]
82 Gpu(#[from] amari_gpu::GpuError),
83
84 #[error(transparent)]
86 InfoGeom(#[from] amari_info_geom::InfoGeomError),
87
88 #[error(transparent)]
90 Network(#[from] amari_network::NetworkError),
91
92 #[error(transparent)]
94 Fusion(#[from] amari_fusion::EvaluationError),
95
96 #[error(transparent)]
98 Tropical(#[from] amari_tropical::TropicalError),
99
100 #[error(transparent)]
102 Dual(#[from] amari_dual::DualError),
103
104 #[cfg(feature = "calculus")]
106 #[error(transparent)]
107 Calculus(#[from] amari_calculus::CalculusError),
108
109 #[cfg(feature = "holographic")]
111 #[error(transparent)]
112 Holographic(#[from] amari_holographic::HolographicError),
113
114 #[cfg(feature = "probabilistic")]
116 #[error(transparent)]
117 Probabilistic(#[from] amari_probabilistic::ProbabilisticError),
118
119 #[cfg(feature = "functional")]
121 #[error(transparent)]
122 Functional(#[from] amari_functional::FunctionalError),
123
124 #[cfg(feature = "topology")]
126 #[error(transparent)]
127 Topology(#[from] amari_topology::TopologyError),
128}
129
130pub type AmariResult<T> = Result<T, AmariError>;
132
133impl From<amari_automata::AutomataError> for AmariError {
135 fn from(err: amari_automata::AutomataError) -> Self {
136 AmariError::Automata(err)
137 }
138}
139
140pub use amari_core::{Bivector, Multivector, Scalar, Vector};
142pub use amari_dual::{DualMultivector, DualNumber};
143pub use amari_fusion::TropicalDualClifford;
144pub use amari_info_geom::{DuallyFlatManifold, FisherInformationMatrix, SimpleAlphaConnection};
145pub use amari_network::{
146 Community, GeometricEdge, GeometricNetwork, NodeMetadata, PropagationAnalysis,
147};
148pub use amari_tropical::{TropicalMatrix, TropicalMultivector, TropicalNumber};