logefix

Function logefix 

Source
pub fn logefix(x: u32, precision: u8) -> i32
Examples 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}