use core::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConditioningError {
ZeroDimension,
MatrixDimensionMismatch,
NonFiniteMatrixEntry,
NonFiniteJitter,
NegativeJitter,
NotPositiveDefinite,
RightHandSideDimensionMismatch,
NonFiniteRightHandSideEntry,
}
impl fmt::Display for ConditioningError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::ZeroDimension => write!(f, "conditioning matrix dimension must be positive"),
Self::MatrixDimensionMismatch => write!(
f,
"flattened conditioning matrix length must equal dimension squared"
),
Self::NonFiniteMatrixEntry => {
write!(f, "conditioning matrix entries must be finite")
}
Self::NonFiniteJitter => write!(f, "conditioning jitter must be finite"),
Self::NegativeJitter => {
write!(f, "conditioning jitter must be non-negative")
}
Self::NotPositiveDefinite => write!(
f,
"conditioning matrix is not positive definite after applying jitter"
),
Self::RightHandSideDimensionMismatch => write!(
f,
"right-hand-side length must equal conditioning matrix dimension"
),
Self::NonFiniteRightHandSideEntry => {
write!(f, "right-hand-side entries must be finite")
}
}
}
}
impl std::error::Error for ConditioningError {}