1  // Translated from C to Rust. The original C code can be found at
2  // https://github.com/ulfjack/ryu and carries the following license:
3  //
4  // Copyright 2018 Ulf Adams
5  //
6  // The contents of this file may be used under the terms of the Apache License,
7  // Version 2.0.
8  //
9  //    (See accompanying file LICENSE-Apache or copy at
10  //     http://www.apache.org/licenses/LICENSE-2.0)
11  //
12  // Alternatively, the contents of this file may be used under the terms of
13  // the Boost Software License, Version 1.0.
14  //    (See accompanying file LICENSE-Boost or copy at
15  //     https://www.boost.org/LICENSE_1_0.txt)
16  //
17  // Unless required by applicable law or agreed to in writing, this software
18  // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  // KIND, either express or implied.
20  
21  #![allow(dead_code)]
22  #![allow(
23      clippy::cast_lossless,
24      clippy::cast_possible_truncation,
25      clippy::cast_possible_wrap,
26      clippy::cast_sign_loss,
27      clippy::unreadable_literal,
28      clippy::unseparated_literal_suffix,
29      clippy::wildcard_imports
30  )]
31  
32  #[path = "../src/common.rs"]
33  mod common;
34  
35  #[path = "../src/d2s_full_table.rs"]
36  mod d2s_full_table;
37  
38  #[path = "../src/d2s_intrinsics.rs"]
39  mod d2s_intrinsics;
40  
41  #[path = "../src/d2s_small_table.rs"]
42  mod d2s_small_table;
43  
44  use d2s_full_table::*;
45  use d2s_small_table::*;
46  
47  #[test]
test_compute_pow5()48  fn test_compute_pow5() {
49      for (i, entry) in DOUBLE_POW5_SPLIT.iter().enumerate() {
50          assert_eq!(*entry, unsafe { compute_pow5(i as u32) }, "entry {}", i);
51      }
52  }
53  
54  #[test]
test_compute_inv_pow5()55  fn test_compute_inv_pow5() {
56      for (i, entry) in DOUBLE_POW5_INV_SPLIT[..292].iter().enumerate() {
57          assert_eq!(*entry, unsafe { compute_inv_pow5(i as u32) }, "entry {}", i);
58      }
59  }
60