uncertain_numerics/
conditioning_error.rs1use core::fmt;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum ConditioningError {
6 ZeroDimension,
8 MatrixDimensionMismatch,
10 NonFiniteMatrixEntry,
12 NonFiniteJitter,
14 NegativeJitter,
16 NotPositiveDefinite,
18 RightHandSideDimensionMismatch,
20 NonFiniteRightHandSideEntry,
22}
23
24impl fmt::Display for ConditioningError {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 Self::ZeroDimension => write!(f, "conditioning matrix dimension must be positive"),
28 Self::MatrixDimensionMismatch => write!(
29 f,
30 "flattened conditioning matrix length must equal dimension squared"
31 ),
32 Self::NonFiniteMatrixEntry => {
33 write!(f, "conditioning matrix entries must be finite")
34 }
35 Self::NonFiniteJitter => write!(f, "conditioning jitter must be finite"),
36 Self::NegativeJitter => {
37 write!(f, "conditioning jitter must be non-negative")
38 }
39 Self::NotPositiveDefinite => write!(
40 f,
41 "conditioning matrix is not positive definite after applying jitter"
42 ),
43 Self::RightHandSideDimensionMismatch => write!(
44 f,
45 "right-hand-side length must equal conditioning matrix dimension"
46 ),
47 Self::NonFiniteRightHandSideEntry => {
48 write!(f, "right-hand-side entries must be finite")
49 }
50 }
51 }
52}
53
54impl std::error::Error for ConditioningError {}