Merge pull request rust-lang/libm#269 from ajtribick/fma_wrapping_neg

This commit is contained in:
Amanieu d'Antras 2022-10-01 18:39:34 +01:00 committed by GitHub
commit aa06df736e

View file

@ -126,8 +126,8 @@ pub fn fma(x: f64, y: f64, z: f64) -> f64 {
rlo = res;
rhi = rhi.wrapping_sub(zhi.wrapping_add(borrow as u64));
if (rhi >> 63) != 0 {
rlo = (-(rlo as i64)) as u64;
rhi = (-(rhi as i64)) as u64 - (rlo != 0) as u64;
rlo = (rlo as i64).wrapping_neg() as u64;
rhi = (rhi as i64).wrapping_neg() as u64 - (rlo != 0) as u64;
sign = (sign == 0) as i32;
}
nonzero = (rhi != 0) as i32;
@ -232,4 +232,12 @@ mod tests {
-3991680619069439e277
);
}
#[test]
fn fma_underflow() {
assert_eq!(
fma(1.1102230246251565e-16, -9.812526705433188e-305, 1.0894e-320),
0.0,
);
}
}