The methods `f32::log` and `f64::log` do not round correctly. As a trivial example, this code ```rust fn main() { println!("{}, {}", 13f32.exp2().log2(), 13f32.exp2().log(2.0)); println!("{}, {}", 29f64.exp2().log2(), 29f64.exp2().log(2.0)); } ``` outputs ``` 13, 12.999999 29, 29.000000000000004 ```