\left(\left(n + 1\right) \cdot \log \left(n + 1\right) - n \cdot \log n\right) - 1
\mathsf{fma}\left(\frac{1}{n}, 0.5 - \frac{0.1666666666666666851703837437526090070605}{n}, \log n \cdot 1\right)double f(double n) {
double r72959 = n;
double r72960 = 1.0;
double r72961 = r72959 + r72960;
double r72962 = log(r72961);
double r72963 = r72961 * r72962;
double r72964 = log(r72959);
double r72965 = r72959 * r72964;
double r72966 = r72963 - r72965;
double r72967 = r72966 - r72960;
return r72967;
}
double f(double n) {
double r72968 = 1.0;
double r72969 = n;
double r72970 = r72968 / r72969;
double r72971 = 0.5;
double r72972 = 0.16666666666666669;
double r72973 = r72972 / r72969;
double r72974 = r72971 - r72973;
double r72975 = log(r72969);
double r72976 = 1.0;
double r72977 = r72975 * r72976;
double r72978 = fma(r72970, r72974, r72977);
return r72978;
}




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 2019362 +o rules:numerics
(FPCore (n)
:name "logs (example 3.8)"
:precision binary64
:pre (> n 6.8e+15)
:herbie-target
(- (log (+ n 1)) (- (/ 1 (* 2 n)) (- (/ 1 (* 3 (* n n))) (/ 4 (pow n 3)))))
(- (- (* (+ n 1) (log (+ n 1))) (* n (log n))) 1))