Sha256: b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2

Contents?: true

Size: 964 Bytes

Versions: 11

Compression:

Stored size: 964 Bytes

Contents

#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn scalbn(x: f64, mut n: i32) -> f64 {
    let x1p1023 = f64::from_bits(0x7fe0000000000000); // 0x1p1023 === 2 ^ 1023
    let x1p53 = f64::from_bits(0x4340000000000000); // 0x1p53 === 2 ^ 53
    let x1p_1022 = f64::from_bits(0x0010000000000000); // 0x1p-1022 === 2 ^ (-1022)

    let mut y = x;

    if n > 1023 {
        y *= x1p1023;
        n -= 1023;
        if n > 1023 {
            y *= x1p1023;
            n -= 1023;
            if n > 1023 {
                n = 1023;
            }
        }
    } else if n < -1022 {
        /* make sure final n < -53 to avoid double
        rounding in the subnormal range */
        y *= x1p_1022 * x1p53;
        n += 1022 - 53;
        if n < -1022 {
            y *= x1p_1022 * x1p53;
            n += 1022 - 53;
            if n < -1022 {
                n = -1022;
            }
        }
    }
    y * f64::from_bits(((0x3ff + n) as u64) << 52)
}

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/libm-0.2.11/src/math/scalbn.rs
wasmtime-28.0.0 ./ext/cargo-vendor/libm-0.2.11/src/math/scalbn.rs
wasmtime-27.0.0 ./ext/cargo-vendor/libm-0.2.11/src/math/scalbn.rs
wasmtime-26.0.0 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-25.0.2 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-25.0.1 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-25.0.0 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-24.0.0 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-23.0.2 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-22.0.0 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs
wasmtime-21.0.1 ./ext/cargo-vendor/libm-0.2.8/src/math/scalbn.rs