amari_dual/
error.rs

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