dashu-int 0.3.1

A big integer library with good performance
Documentation
use dashu_int::{IBig, UBig};

mod helper_macros;

#[test]
fn test_sum() {
    let nums = [
        ubig!(0),
        ubig!(1),
        ubig!(10),
        ubig!(100),
        ubig!(10000),
        ubig!(100000000),
        ubig!(10000000000000000),
        ubig!(100000000000000000000000000000000),
    ];

    assert_eq!(nums[..0].iter().sum::<UBig>(), ubig!(0));
    assert_eq!(nums[..1].iter().sum::<UBig>(), ubig!(0));
    assert_eq!(nums[..2].iter().sum::<UBig>(), ubig!(1));
    assert_eq!(nums[..4].iter().sum::<UBig>(), ubig!(111));
    assert_eq!(nums.iter().sum::<UBig>(), ubig!(100000000000000010000000100010111));
    assert_eq!(nums.iter().sum::<IBig>(), ibig!(100000000000000010000000100010111));
    assert_eq!(nums.into_iter().sum::<UBig>(), ubig!(100000000000000010000000100010111));

    let nums = [
        ibig!(0),
        ibig!(-1),
        ibig!(10),
        ibig!(-100),
        ibig!(10000),
        ibig!(-100000000),
        ibig!(10000000000000000),
        ibig!(-100000000000000000000000000000000),
    ];

    assert_eq!(nums[..0].iter().sum::<IBig>(), ibig!(0));
    assert_eq!(nums[..1].iter().sum::<IBig>(), ibig!(0));
    assert_eq!(nums[..2].iter().sum::<IBig>(), ibig!(-1));
    assert_eq!(nums[..4].iter().sum::<IBig>(), ibig!(-91));
    assert_eq!(nums.iter().sum::<IBig>(), ibig!(-99999999999999990000000099990091));
    assert_eq!(nums.into_iter().sum::<IBig>(), ibig!(-99999999999999990000000099990091));
}

#[test]
fn test_prod() {
    assert_eq!((1..4u8).map(UBig::from).product::<UBig>(), ubig!(6));
    assert_eq!((1..10u8).map(UBig::from).product::<UBig>(), ubig!(362880));
    assert_eq!((1..10u8).map(UBig::from).product::<IBig>(), ibig!(362880));
    assert_eq!((0..4u8).map(UBig::from).product::<UBig>(), ubig!(0));
    assert_eq!((0..10u8).map(UBig::from).product::<UBig>(), ubig!(0));
    assert_eq!((0..10u8).map(UBig::from).product::<IBig>(), ibig!(0));

    assert_eq!((-4..-1).map(IBig::from).product::<IBig>(), ibig!(-24));
    assert_eq!((-10..-1).map(IBig::from).product::<IBig>(), ibig!(-3628800));
    assert_eq!((-4..4).map(IBig::from).product::<IBig>(), ibig!(0));
    assert_eq!((-10..10).map(IBig::from).product::<IBig>(), ibig!(0));
}