Sha256: 99f38b768ad15e726559c446825f9f1bad67935cdd28ffcc1cbcd3e031a901ea

Contents?: true

Size: 1.56 KB

Versions: 38

Compression:

Stored size: 1.56 KB

Contents

use minimal_lexical::extended_float::ExtendedFloat;
use minimal_lexical::rounding;

#[test]
fn round_test() {
    let mut fp = ExtendedFloat {
        mant: 9223372036854776832,
        exp: -10,
    };
    rounding::round::<f64, _>(&mut fp, |f, s| {
        f.mant >>= s;
        f.exp += s;
    });
    assert_eq!(fp.mant, 0);
    assert_eq!(fp.exp, 1);

    let mut fp = ExtendedFloat {
        mant: 9223372036854776832,
        exp: -10,
    };
    rounding::round::<f64, _>(&mut fp, |f, s| {
        f.mant >>= s;
        f.exp += s;
        // Round-up.
        f.mant += 1;
    });
    assert_eq!(fp.mant, 1);
    assert_eq!(fp.exp, 1);

    // Round-down
    let mut fp = ExtendedFloat {
        mant: 9223372036854776832,
        exp: -10,
    };
    rounding::round::<f64, _>(&mut fp, |f, s| {
        rounding::round_nearest_tie_even(f, s, |is_odd, is_halfway, is_above| {
            is_above || (is_odd && is_halfway)
        });
    });
    assert_eq!(fp.mant, 0);
    assert_eq!(fp.exp, 1);

    // Round up
    let mut fp = ExtendedFloat {
        mant: 9223372036854778880,
        exp: -10,
    };
    rounding::round::<f64, _>(&mut fp, |f, s| {
        rounding::round_nearest_tie_even(f, s, |is_odd, is_halfway, is_above| {
            is_above || (is_odd && is_halfway)
        });
    });
    assert_eq!(fp.mant, 2);
    assert_eq!(fp.exp, 1);

    // Round down
    let mut fp = ExtendedFloat {
        mant: 9223372036854778880,
        exp: -10,
    };
    rounding::round::<f64, _>(&mut fp, rounding::round_down);
    assert_eq!(fp.mant, 1);
    assert_eq!(fp.exp, 1);
}

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-28.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-27.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-26.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-25.0.2 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-25.0.1 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-25.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-24.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-23.0.2 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-22.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-21.0.1 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-20.0.2 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-20.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-18.0.3 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-17.0.1 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-17.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-16.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-15.0.1 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-15.0.0 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs
wasmtime-14.0.4 ./ext/cargo-vendor/minimal-lexical-0.2.1/tests/rounding_tests.rs