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