From 0eba4c206a3c47c375cb9ead20d37cf00f6351cf Mon Sep 17 00:00:00 2001 From: Trevor Spiteri Date: Mon, 8 Jan 2018 19:22:37 +0100 Subject: [PATCH] doc: show that `f32::log` and `f64::log` are not correctly rounded --- src/libstd/f32.rs | 19 +++++++++---------- src/libstd/f64.rs | 19 +++++++++---------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/libstd/f32.rs b/src/libstd/f32.rs index 6d76c7e722c4..8a15f19e4406 100644 --- a/src/libstd/f32.rs +++ b/src/libstd/f32.rs @@ -470,22 +470,21 @@ impl f32 { return unsafe { intrinsics::logf32(self) }; } - /// Returns the logarithm of the number with respect to an arbitrary base. + /// Returns the logarithm of the number with respect to an arbitrary base, + /// calculated as `self.ln() / base.ln()`. + /// + /// `self.log2()` can produce more accurate results for base 2, and + /// `self.log10()` can produce more accurate results for base 10. /// /// ``` /// use std::f32; /// - /// let ten = 10.0f32; - /// let two = 2.0f32; + /// let five = 5.0f32; /// - /// // log10(10) - 1 == 0 - /// let abs_difference_10 = (ten.log(10.0) - 1.0).abs(); + /// // log5(5) - 1 == 0 + /// let abs_difference = (five.log(5.0) - 1.0).abs(); /// - /// // log2(2) - 1 == 0 - /// let abs_difference_2 = (two.log(2.0) - 1.0).abs(); - /// - /// assert!(abs_difference_10 <= f32::EPSILON); - /// assert!(abs_difference_2 <= f32::EPSILON); + /// assert!(abs_difference <= f32::EPSILON); /// ``` #[stable(feature = "rust1", since = "1.0.0")] #[inline] diff --git a/src/libstd/f64.rs b/src/libstd/f64.rs index dee9566f1fc6..33f447b794c9 100644 --- a/src/libstd/f64.rs +++ b/src/libstd/f64.rs @@ -430,20 +430,19 @@ impl f64 { self.log_wrapper(|n| { unsafe { intrinsics::logf64(n) } }) } - /// Returns the logarithm of the number with respect to an arbitrary base. + /// Returns the logarithm of the number with respect to an arbitrary base, + /// calculated as `self.ln() / base.ln()`. + /// + /// `self.log2()` can produce more accurate results for base 2, and + /// `self.log10()` can produce more accurate results for base 10. /// /// ``` - /// let ten = 10.0_f64; - /// let two = 2.0_f64; + /// let five = 5.0_f64; /// - /// // log10(10) - 1 == 0 - /// let abs_difference_10 = (ten.log(10.0) - 1.0).abs(); + /// // log5(5) - 1 == 0 + /// let abs_difference = (five.log(5.0) - 1.0).abs(); /// - /// // log2(2) - 1 == 0 - /// let abs_difference_2 = (two.log(2.0) - 1.0).abs(); - /// - /// assert!(abs_difference_10 < 1e-10); - /// assert!(abs_difference_2 < 1e-10); + /// assert!(abs_difference < 1e-10); /// ``` #[stable(feature = "rust1", since = "1.0.0")] #[inline]