bnum 0.11.0

Arbitrary, fixed size numeric types that extend the functionality of primitive numeric types.
Documentation
pub mod cast;
pub mod checked;
pub mod cmp;
pub mod endian;
pub mod fmt;

#[cfg(feature = "numtraits")]
pub mod numtraits;

pub mod ops;
pub mod radix;
pub mod unchecked;

#[cfg(test)]
macro_rules! tests {
    ($int: ty) => {
        test_bignum! {
            function: <$int>::count_ones(a: $int)
        }
        test_bignum! {
            function: <$int>::count_zeros(a: $int)
        }
        test_bignum! {
            function: <$int>::leading_zeros(a: $int)
        }
        test_bignum! {
            function: <$int>::trailing_zeros(a: $int)
        }
        test_bignum! {
            function: <$int>::leading_ones(a: $int)
        }
        test_bignum! {
            function: <$int>::trailing_ones(a: $int)
        }
        test_bignum! {
            function: <$int>::rotate_left(a: $int, b: u8)
        }
        test_bignum! {
            function: <$int>::rotate_right(a: $int, b: u8)
        }
        test_bignum! {
            function: <$int>::swap_bytes(a: $int)
        }
        test_bignum! {
            function: <$int>::reverse_bits(a: $int)
        }
        test_bignum! {
            function: <$int>::pow(a: $int, b: u16),
            skip: crate::test::debug_skip!(a.checked_pow(b as u32).is_none())
        }
        test_bignum! {
            function: <$int>::div_euclid(a: $int, b: $int),
            skip: a.checked_div_euclid(b).is_none()
        }
        test_bignum! {
            function: <$int>::rem_euclid(a: $int, b: $int),
            skip: a.checked_rem_euclid(b).is_none()
        }
        test_bignum! {
            function: <$int>::abs_diff(a: $int, b: $int)
        }
        test_bignum! {
            function: <$int>::ilog(a: $int, base: $int),
            skip: a <= 0 || base <= 1
        }
        test_bignum! {
            function: <$int>::ilog2(a: $int),
            skip: a <= 0
        }
        test_bignum! {
            function: <$int>::ilog10(a: $int),
            skip: a <= 0
        }
        test_bignum! {
            function: <$int>::checked_next_multiple_of(a: $int, b: $int)
        }
        test_bignum! {
            function: <$int>::next_multiple_of(a: $int, b: $int),
            skip: crate::test::debug_skip!(a.checked_next_multiple_of(b).is_none()) || b == 0
        }
        test_bignum! {
            function: <$int>::div_floor(a: $int, b: $int),
            skip: a.checked_div(b).is_none()
        }
        test_bignum! {
            function: <$int>::div_ceil(a: $int, b: $int),
            skip: a.checked_div(b).is_none()
        }
    };
}

#[cfg(test)]
pub(crate) use tests;