From 27bc768d191f3fb33cd81ff5decc2ee779b7dfa7 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Tue, 11 Jun 2019 14:09:45 -0700 Subject: [PATCH] Sync to ulfjack/ryu@688f43b --- README.md | 2 +- src/d2s.rs | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c3596f3..3522d56 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ C, [https://github.com/ulfjack/ryu][upstream]. uses nothing from the Rust standard library so is usable from no_std crates.* [paper]: https://dl.acm.org/citation.cfm?id=3192369 -[upstream]: https://github.com/ulfjack/ryu/tree/159ce150fa94e0229f3e02ecc6f4243f21388c0b +[upstream]: https://github.com/ulfjack/ryu/tree/688f43b62276b400728baad54afc32c3ab9c1a95 ```toml [dependencies] diff --git a/src/d2s.rs b/src/d2s.rs index 97d4830..46fe54b 100644 --- a/src/d2s.rs +++ b/src/d2s.rs @@ -258,11 +258,10 @@ pub fn d2d(ieee_mantissa: u64, ieee_exponent: u32) -> FloatingDecimal64 { } } else if q < 63 { // TODO(ulfjack): Use a tighter bound here. - // We need to compute min(ntz(mv), pow5_factor(mv) - e2) >= q - 1 - // <=> ntz(mv) >= q - 1 && pow5_factor(mv) - e2 >= q - 1 - // <=> ntz(mv) >= q - 1 (e2 is negative and -e2 >= q) - // <=> (mv & ((1 << (q - 1)) - 1)) == 0 - // We also need to make sure that the left shift does not overflow. + // We want to know if the full product has at least q trailing zeros. + // We need to compute min(p2(mv), p5(mv) - e2) >= q + // <=> p2(mv) >= q && p5(mv) - e2 >= q + // <=> p2(mv) >= q (because -e2 >= q) vr_is_trailing_zeros = multiple_of_power_of_2(mv, q); } }