\left(\left(n + 1\right) \cdot \log \left(n + 1\right) - n \cdot \log n\right) - 1
\frac{0.5}{n} - \mathsf{fma}\left(1, -\log n, \frac{\frac{0.1666666666666666851703837437526090070605}{n}}{n}\right)double f(double n) {
double r2385228 = n;
double r2385229 = 1.0;
double r2385230 = r2385228 + r2385229;
double r2385231 = log(r2385230);
double r2385232 = r2385230 * r2385231;
double r2385233 = log(r2385228);
double r2385234 = r2385228 * r2385233;
double r2385235 = r2385232 - r2385234;
double r2385236 = r2385235 - r2385229;
return r2385236;
}
double f(double n) {
double r2385237 = 0.5;
double r2385238 = n;
double r2385239 = r2385237 / r2385238;
double r2385240 = 1.0;
double r2385241 = log(r2385238);
double r2385242 = -r2385241;
double r2385243 = 0.16666666666666669;
double r2385244 = r2385243 / r2385238;
double r2385245 = r2385244 / r2385238;
double r2385246 = fma(r2385240, r2385242, r2385245);
double r2385247 = r2385239 - r2385246;
return r2385247;
}




Bits error versus n
| Original | 63.0 |
|---|---|
| Target | 0 |
| Herbie | 0 |
Initial program 63.0
Simplified62.0
Taylor expanded around inf 0.0
Simplified0
Final simplification0
herbie shell --seed 2019171 +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))