pub type Float = GenericFraction<Int>;
pub enum Float { Rational(Sign, Ratio<u128>), Infinity(Sign), NaN, }