\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.16666666666666669}{n}, \log n \cdot 1\right)double f(double n) {
double r105858 = n;
double r105859 = 1.0;
double r105860 = r105858 + r105859;
double r105861 = log(r105860);
double r105862 = r105860 * r105861;
double r105863 = log(r105858);
double r105864 = r105858 * r105863;
double r105865 = r105862 - r105864;
double r105866 = r105865 - r105859;
return r105866;
}
double f(double n) {
double r105867 = 1.0;
double r105868 = n;
double r105869 = r105867 / r105868;
double r105870 = 0.5;
double r105871 = 0.16666666666666669;
double r105872 = r105871 / r105868;
double r105873 = r105870 - r105872;
double r105874 = log(r105868);
double r105875 = 1.0;
double r105876 = r105874 * r105875;
double r105877 = fma(r105869, r105873, r105876);
return r105877;
}




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 2020062 +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))