pub use labrador_ldpc::decoder::DecodeFrom; // Less than zero = 1 bit // Greater than zero = 0 bit pub trait FromHardBit { fn from_hard_bit(bit: bool) -> Self; } impl<T: DecodeFrom> FromHardBit for T { fn from_hard_bit(bit: bool) -> Self { if bit { -Self::one() } else { Self::one() } } } #[cfg(test)] mod tests { use super::*; #[test] fn e2e() { assert!(f32::from_hard_bit(true).hard_bit()); assert!(!f32::from_hard_bit(false).hard_bit()); assert!(f64::from_hard_bit(true).hard_bit()); assert!(!f64::from_hard_bit(false).hard_bit()); assert!(i8::from_hard_bit(true).hard_bit()); assert!(!i8::from_hard_bit(false).hard_bit()); assert!(i16::from_hard_bit(true).hard_bit()); assert!(!i16::from_hard_bit(false).hard_bit()); assert!(i32::from_hard_bit(true).hard_bit()); assert!(!i32::from_hard_bit(false).hard_bit()); } }