\left(\left(n + 1\right) \cdot \log \left(n + 1\right) - n \cdot \log n\right) - 1
\frac{0.5}{n} - \mathsf{fma}\left(-\log n, 1, \frac{0.1666666666666666851703837437526090070605}{n \cdot n}\right)double f(double n) {
double r65690 = n;
double r65691 = 1.0;
double r65692 = r65690 + r65691;
double r65693 = log(r65692);
double r65694 = r65692 * r65693;
double r65695 = log(r65690);
double r65696 = r65690 * r65695;
double r65697 = r65694 - r65696;
double r65698 = r65697 - r65691;
return r65698;
}
double f(double n) {
double r65699 = 0.5;
double r65700 = n;
double r65701 = r65699 / r65700;
double r65702 = log(r65700);
double r65703 = -r65702;
double r65704 = 1.0;
double r65705 = 0.16666666666666669;
double r65706 = r65700 * r65700;
double r65707 = r65705 / r65706;
double r65708 = fma(r65703, r65704, r65707);
double r65709 = r65701 - r65708;
return r65709;
}




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