1use thiserror::Error;
4
5#[derive(Error, Debug, Clone, PartialEq)]
7pub enum DualError {
8 #[error("Dimension mismatch: expected {expected}, got {actual}")]
10 DimensionMismatch { expected: usize, actual: usize },
11
12 #[error("Division by zero in dual number computation")]
14 DivisionByZero,
15
16 #[error("Invalid gradient dimension: {0}")]
18 InvalidGradientDimension(usize),
19
20 #[error("Numerical instability detected in dual number computation")]
22 NumericalInstability,
23
24 #[error("Invalid operation: {0}")]
26 InvalidOperation(String),
27}
28
29pub type DualResult<T> = Result<T, DualError>;