#[derive(Debug, Clone)]
pub enum SubstrateError {
SingularMatrix { size: usize, det: f64 },
StabilizationFailed { size: usize, ridge: f64 },
DimensionMismatch { expected: usize, actual: usize },
}
impl std::fmt::Display for SubstrateError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
SubstrateError::SingularMatrix { size, det } => {
write!(f, "singular {0}x{0} matrix (det={1:.3e})", size, det)
}
SubstrateError::StabilizationFailed { size, ridge } => {
write!(f, "ridge {0:.1e} insufficient to stabilise {1}x{1} matrix", ridge, size)
}
SubstrateError::DimensionMismatch { expected, actual } => {
write!(f, "dimension mismatch: expected {}, got {}", expected, actual)
}
}
}
}
impl std::error::Error for SubstrateError {}