pub fn logefix(x: u32, precision: u8) -> i32Examples found in repository?
examples/cli.rs (line 27)
4fn main() {
5 print!("Choose precision [1, 31]: ");
6 stdout().flush().unwrap();
7 let precision: u8 = get_input().trim().parse().unwrap();
8 if precision < 1 || precision > 31 {
9 println!("Wrong precision");
10 return;
11 }
12 let scale = 1u32 << precision;
13 let max_input = 1u32 << (32 - precision);
14
15 loop {
16 print!("x = ");
17 stdout().flush().unwrap();
18 let x: f32 = get_input().trim().parse().unwrap();
19 if x < 0.0 {
20 println!("x is negative!");
21 continue;
22 }
23 if x >= max_input as f32 {
24 println!("x is too big, max: {}", max_input);
25 }
26 println!(" loge({}) = {}", x, x.ln());
27 println!("logefix({}) = {}", x, logefix((x * scale as f32) as u32, precision) as f32 / scale as f32);
28 println!(" log2({}) = {}", x, x.log2());
29 println!("log2fix({}) = {}", x, log2fix((x * scale as f32) as u32, precision) as f32 / scale as f32);
30 println!(" log10({}) = {}", x, x.log10());
31 println!("log10fix({}) = {}", x, log10fix((x * scale as f32) as u32, precision) as f32 / scale as f32);
32 println!();
33 }
34}