1use std::{
2 error::Error,
3 fmt::{Display, Error as FmtError, Formatter},
4};
5
6#[derive(Copy, Clone, Debug)]
7pub enum FloatError {
8 UnderflowError,
9 PrecisionError,
10 ProbabilityRangeError,
11 NaturalRangeError,
12 RealRangeError,
13 BadNumber,
14}
15
16impl Display for FloatError {
17 fn fmt(&self, fmt: &mut Formatter) -> Result<(), FmtError> {
18 match self {
19 FloatError::UnderflowError => write!(fmt, "Calculation underflowed"),
20 FloatError::PrecisionError => write!(fmt, "Precision cannot be maintained"),
21 FloatError::ProbabilityRangeError => write!(fmt, "Not a probability"),
22 FloatError::NaturalRangeError => write!(fmt, "Not a natural number"),
23 FloatError::RealRangeError => write!(fmt, "Not real a number"),
24 FloatError::BadNumber => write!(fmt, "Number does not meet constraint"),
25 }
26 }
27}
28
29impl Error for FloatError {}