File tree 2 files changed +20
-16
lines changed
2 files changed +20
-16
lines changed Original file line number Diff line number Diff line change @@ -719,12 +719,13 @@ impl f32 {
719
719
/// # Examples
720
720
///
721
721
/// ```
722
- /// let x = 6.0f32 ;
722
+ /// let x = 1e-8_f32 ;
723
723
///
724
- /// // e^(ln(6)) - 1
725
- /// let abs_difference = (x.ln().exp_m1() - 5.0).abs();
724
+ /// // for very small x, e^x is approximately 1 + x + x^2 / 2
725
+ /// let approx = x + x * x / 2.0;
726
+ /// let abs_difference = (x.exp_m1() - approx).abs();
726
727
///
727
- /// assert!(abs_difference <= f32::EPSILON );
728
+ /// assert!(abs_difference < 1e-10 );
728
729
/// ```
729
730
#[ must_use = "method returns a new number and does not mutate the original value" ]
730
731
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
@@ -739,12 +740,13 @@ impl f32 {
739
740
/// # Examples
740
741
///
741
742
/// ```
742
- /// let x = std::f32::consts::E - 1.0 ;
743
+ /// let x = 1e-8_f32 ;
743
744
///
744
- /// // ln(1 + (e - 1)) == ln(e) == 1
745
- /// let abs_difference = (x.ln_1p() - 1.0).abs();
745
+ /// // for very small x, ln(1 + x) is approximately x - x^2 / 2
746
+ /// let approx = x - x * x / 2.0;
747
+ /// let abs_difference = (x.ln_1p() - approx).abs();
746
748
///
747
- /// assert!(abs_difference <= f32::EPSILON );
749
+ /// assert!(abs_difference < 1e-10 );
748
750
/// ```
749
751
#[ must_use = "method returns a new number and does not mutate the original value" ]
750
752
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
Original file line number Diff line number Diff line change @@ -721,12 +721,13 @@ impl f64 {
721
721
/// # Examples
722
722
///
723
723
/// ```
724
- /// let x = 7.0_f64 ;
724
+ /// let x = 1e-16_f64 ;
725
725
///
726
- /// // e^(ln(7)) - 1
727
- /// let abs_difference = (x.ln().exp_m1() - 6.0).abs();
726
+ /// // for very small x, e^x is approximately 1 + x + x^2 / 2
727
+ /// let approx = x + x * x / 2.0;
728
+ /// let abs_difference = (x.exp_m1() - approx).abs();
728
729
///
729
- /// assert!(abs_difference < 1e-10 );
730
+ /// assert!(abs_difference < 1e-20 );
730
731
/// ```
731
732
#[ must_use = "method returns a new number and does not mutate the original value" ]
732
733
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
@@ -741,12 +742,13 @@ impl f64 {
741
742
/// # Examples
742
743
///
743
744
/// ```
744
- /// let x = std::f64::consts::E - 1.0 ;
745
+ /// let x = 1e-16_f64 ;
745
746
///
746
- /// // ln(1 + (e - 1)) == ln(e) == 1
747
- /// let abs_difference = (x.ln_1p() - 1.0).abs();
747
+ /// // for very small x, ln(1 + x) is approximately x - x^2 / 2
748
+ /// let approx = x - x * x / 2.0;
749
+ /// let abs_difference = (x.ln_1p() - approx).abs();
748
750
///
749
- /// assert!(abs_difference < 1e-10 );
751
+ /// assert!(abs_difference < 1e-20 );
750
752
/// ```
751
753
#[ must_use = "method returns a new number and does not mutate the original value" ]
752
754
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
You can’t perform that action at this time.
0 commit comments