1use thiserror::Error;
4
5#[derive(Error, Debug, Clone, PartialEq)]
7pub enum CalculusError {
8 #[error("Invalid coordinate dimension: expected {expected}, got {got}")]
10 InvalidDimension { expected: usize, got: usize },
11
12 #[error("Numerical differentiation failed: {reason}")]
14 DifferentiationFailed { reason: String },
15
16 #[error("Integration failed: {reason}")]
18 IntegrationFailed { reason: String },
19
20 #[error("Invalid coordinate system: {0}")]
22 InvalidCoordinateSystem(String),
23
24 #[error("Manifold computation failed: {reason}")]
26 ManifoldError { reason: String },
27
28 #[error("Field evaluation failed at point: {reason}")]
30 FieldEvaluationError { reason: String },
31
32 #[error("Covariant derivative computation failed: {reason}")]
34 CovariantDerivativeError { reason: String },
35
36 #[error("Metric tensor error: {reason}")]
38 MetricError { reason: String },
39
40 #[error("Numerical instability: {reason}")]
42 NumericalInstability { reason: String },
43}
44
45pub type CalculusResult<T> = Result<T, CalculusError>;