round result of (highest as f64).log(2.0)
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Wed, 13 Mar 2019 02:55:30 +0000 (15:55 +1300)
committerXimin Luo <infinity0@debian.org>
Sun, 19 May 2019 03:22:22 +0000 (04:22 +0100)
Even though (1024f64).log(2.0) has an exact, representable, value, with rustc 1.32 on i386 it comes out as +9.999999999999999985 with optimization enabled. And the rustc doesn't like having two defintions for U1024 etc.

Gbp-Pq: Name 1001_typenum_pr_115.patch

vendor/typenum/build/main.rs

index 9c9f237cd6587694b7c6a4dbe9ebe2cb50f585f9..153031a2f9dc0bced5033a7cf934d10ed06429e5 100644 (file)
@@ -77,7 +77,7 @@ pub fn no_std() {}
 fn main() {
     let highest: u64 = 1024;
 
-    let first2: u32 = (highest as f64).log(2.0) as u32 + 1;
+    let first2: u32 = (highest as f64).log(2.0).round() as u32 + 1;
     let first10: u32 = (highest as f64).log(10.0) as u32 + 1;
     let uints = (0..(highest + 1))
         .chain((first2..64).map(|i| 2u64.pow(i)))