dashu-float 0.6.0-rc.4

Arbitrary-precision float math library for Rust with arbitrary base and arbitrary rounding mode. Provides FBig, DBig, and CachedFBig with efficient base conversion, the hexadecimal float format used by C++ programs, and parsing and formatting in base 2-36. Transcendentals (exp, ln, trig, hyperbolic, powers, roots, pi) are correctly rounded; optional serde, rand, num-traits, rkyv, and zeroize.
Documentation
use dashu_float::DBig;

mod helper_macros;

#[test]
#[rustfmt::skip::macros(fbig)]
fn test_shift() {
    assert_eq!(fbig!(0x0) << 1, fbig!(0x0));
    assert_eq!(fbig!(0x0) >> 1, fbig!(0x0));
    assert_eq!(fbig!(0x1) << 1, fbig!(0x1p1));
    assert_eq!(fbig!(0x1) >> 1, fbig!(0x1p-1));
    assert_eq!(fbig!(-0x1) << 1, fbig!(-0x1p1));
    assert_eq!(fbig!(-0x1) >> 1, fbig!(-0x1p-1));

    assert_eq!(dbig!(0) << 1, dbig!(0));
    assert_eq!(dbig!(0) >> 1, dbig!(0));
    assert_eq!(dbig!(1) << 1, dbig!(1e1));
    assert_eq!(dbig!(1) >> 1, dbig!(1e-1));
    assert_eq!(dbig!(-1) << 1, dbig!(-1e1));
    assert_eq!(dbig!(-1) >> 1, dbig!(-1e-1));
}

#[test]
#[should_panic]
fn test_shift_inf() {
    let _ = DBig::INFINITY >> 1;
}