use thiserror::Error; #[derive(Debug, Error)] pub enum Error { #[error("Insufficient data: at least {required} data points required, but got {provided}")] InsufficientData { required: usize, provided: usize }, #[error("Invalid data: {0}")] InvalidData(String), #[error("Fitting error: {0}")] FittingError(String), #[error("Fit quality check error: {0}")] FitQualityError(String), #[error("Invalid parameter: {0}")] InvalidParameter(String), #[error("Math error: {0}")] MathError(String), #[error("Invalid percentile: {0}. Must be between 0 and 1.")] InvalidPercentile(f64), #[error("Invalid confidence level: {0}. Must be between 0 and 1.")] InvalidConfidenceLevel(f64), #[error("Invalid shape: {0}. Must be between 0 and 1.")] InvalidShape(f64), #[error("Invalid parameters: min ({min}) must be less than max ({max}).")] InvalidRange { min: f64, max: f64 }, #[error("Likely value ({likely}) must be between min ({min}) and max ({max}).")] InvalidMode { min: f64, likely: f64, max: f64 }, #[error("statrs::StatsError: {0}.")] StatsError(#[from] statrs::StatsError), }