Skip to main content

nanvm_lib/vm/number/
mul.rs

1use core::ops::Mul;
2
3use crate::vm::Number;
4
5impl Mul for Number {
6    type Output = Self;
7    fn mul(self, rhs: Self) -> Self {
8        (self.0 * rhs.0).into()
9    }
10}
11
12#[cfg(test)]
13mod tests {
14    use crate::vm::{Number, number::tests::bits};
15
16    /// `-1 * 0` is `-0`: only a `NaN` is canonicalized, a signed zero keeps its sign.
17    #[test]
18    fn negative_zero_keeps_its_sign() {
19        let z = Number::from(-1) * Number::from(0.0);
20        assert_eq!(bits(z), (-0.0f64).to_bits());
21    }
22}