1use std::error::Error;
2#[derive(Copy, Clone, PartialEq, Eq, Debug)]
4pub struct FloatIsNanOrPositive;
5
6impl Error for FloatIsNanOrPositive {}
7
8impl std::fmt::Display for FloatIsNanOrPositive {
9 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
10 write!(f, "LogProb constructed with positive or NaN value")
11 }
12}
13
14#[derive(Copy, Clone, PartialEq, Eq, Debug)]
16pub struct ProbabilitiesSumToGreaterThanOne;
17
18impl Error for ProbabilitiesSumToGreaterThanOne {}
19
20impl std::fmt::Display for ProbabilitiesSumToGreaterThanOne {
21 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22 write!(f, "The sum is greater than 1.0 (improper distribution)")
23 }
24}
25
26impl From<FloatIsNanOrPositive> for ProbabilitiesSumToGreaterThanOne {
27 fn from(_value: FloatIsNanOrPositive) -> Self {
28 ProbabilitiesSumToGreaterThanOne
29 }
30}
31
32#[derive(Copy, Clone, PartialEq, Eq, Debug)]
34pub struct FloatIsNanOrPositiveInfinity;
35
36impl Error for FloatIsNanOrPositiveInfinity {}
37
38impl std::fmt::Display for FloatIsNanOrPositiveInfinity {
39 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
40 write!(f, "LogProb constructed with positive or NaN value")
41 }
42}