twibint 0.3.2

Crate for arithmetic on arbitrarily large integers. Provides Python bindings as well.
Documentation
use crate::BigInt;

use crate::traits::Digit;

use crate::BigFloat;

impl<T: Digit> std::fmt::Binary for BigFloat<T> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        if self.scale == 0 {
            <BigInt<T> as std::fmt::Binary>::fmt(&self.int, f)
        } else if self.scale > 0 {
            <BigInt<T> as std::fmt::Binary>::fmt(&self.int, f)?;
            let mut word = "".to_string();
            for _ in 0..T::NB_BITS {
                word.push('0');
            }
            for _ in 0..self.scale {
                write!(f, "{}", word)?;
            }
            Ok(())
        } else {
            let scale = (-self.scale) as usize;
            if self.int.uint.val.len() > scale {
                crate::bigint::fmt::bin(self.int.sign, &self.int.uint.val[scale..], f)?;
            } else {
                crate::bigint::fmt::bin::<T>(self.int.sign, &[], f)?;
            }
            write!(f, ".")?;
            crate::biguint::fmt::bin(&self.int.uint.val[..scale], f)
        }
    }
}