1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
extern crate num_traits; extern crate float_traits; use core::clone::Clone; use self::num_traits::One; use self::float_traits::{IEEE754Float, BinaryFloat}; pub trait FloatEFT: IEEE754Float + Clone { #[inline] fn split_coef() -> Self { let int_one = <Self as BinaryFloat>::Expo::one(); let int_two = <Self as BinaryFloat>::Expo::one() + <Self as BinaryFloat>::Expo::one(); Self::two_powi((Self::bits() + int_one) / int_two) + Self::one() } } impl<T: IEEE754Float + Clone> FloatEFT for T {}