\left(\left(n + 1\right) \cdot \log \left(n + 1\right) - n \cdot \log n\right) - 1
\frac{-0.1666666666666666851703837437526090070605}{n \cdot n} + \mathsf{fma}\left(1, \log n, \frac{0.5}{n}\right)double f(double n) {
double r78635 = n;
double r78636 = 1.0;
double r78637 = r78635 + r78636;
double r78638 = log(r78637);
double r78639 = r78637 * r78638;
double r78640 = log(r78635);
double r78641 = r78635 * r78640;
double r78642 = r78639 - r78641;
double r78643 = r78642 - r78636;
return r78643;
}
double f(double n) {
double r78644 = 0.16666666666666669;
double r78645 = -r78644;
double r78646 = n;
double r78647 = r78646 * r78646;
double r78648 = r78645 / r78647;
double r78649 = 1.0;
double r78650 = log(r78646);
double r78651 = 0.5;
double r78652 = r78651 / r78646;
double r78653 = fma(r78649, r78650, r78652);
double r78654 = r78648 + r78653;
return r78654;
}




Bits error versus n
| Original | 63.0 |
|---|---|
| Target | 0 |
| Herbie | 0 |
Initial program 63.0
Simplified61.9
Taylor expanded around inf 0.0
Simplified0
Final simplification0
herbie shell --seed 2019174 +o rules:numerics
(FPCore (n)
:name "logs (example 3.8)"
:pre (> n 6.8e+15)
:herbie-target
(- (log (+ n 1.0)) (- (/ 1.0 (* 2.0 n)) (- (/ 1.0 (* 3.0 (* n n))) (/ 4.0 (pow n 3.0)))))
(- (- (* (+ n 1.0) (log (+ n 1.0))) (* n (log n))) 1.0))