use core::fmt;
#[derive(Clone, Debug, PartialEq)]
pub enum StatsError {
EmptyData,
LengthMismatch { expected: usize, got: usize },
InvalidParameter(String),
DimensionMismatch(String),
SingularMatrix,
ConvergenceFailure(String),
}
impl fmt::Display for StatsError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
StatsError::EmptyData => write!(f, "empty data set"),
StatsError::LengthMismatch { expected, got } => {
write!(f, "length mismatch: expected {}, got {}", expected, got)
}
StatsError::InvalidParameter(msg) => write!(f, "invalid parameter: {}", msg),
StatsError::DimensionMismatch(msg) => write!(f, "dimension mismatch: {}", msg),
StatsError::SingularMatrix => write!(f, "singular matrix"),
StatsError::ConvergenceFailure(msg) => write!(f, "convergence failure: {}", msg),
}
}
}
impl From<StatsError> for numra_core::NumraError {
fn from(e: StatsError) -> Self {
numra_core::NumraError::InvalidInput(e.to_string())
}
}