lilliput_float/
packed.rs

1use crate::{F16, F24, F32, F40, F48, F56, F64, F8};
2
3/// A packed representation of floating-point numbers.
4#[derive(Copy, Clone, PartialEq, Debug)]
5pub enum PackedFloat {
6    F8(F8),
7    F16(F16),
8    F24(F24),
9    F32(F32),
10    F40(F40),
11    F48(F48),
12    F56(F56),
13    F64(F64),
14}
15
16impl PartialOrd for PackedFloat {
17    fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
18        match (self, other) {
19            (Self::F8(lhs), Self::F8(rhs)) => lhs.partial_cmp(rhs),
20            (Self::F16(lhs), Self::F16(rhs)) => lhs.partial_cmp(rhs),
21            (Self::F24(lhs), Self::F24(rhs)) => lhs.partial_cmp(rhs),
22            (Self::F32(lhs), Self::F32(rhs)) => lhs.partial_cmp(rhs),
23            (Self::F40(lhs), Self::F40(rhs)) => lhs.partial_cmp(rhs),
24            (Self::F48(lhs), Self::F48(rhs)) => lhs.partial_cmp(rhs),
25            (Self::F56(lhs), Self::F56(rhs)) => lhs.partial_cmp(rhs),
26            (Self::F64(lhs), Self::F64(rhs)) => lhs.partial_cmp(rhs),
27            _ => None,
28        }
29    }
30}