\log \left(1 + x\right)
\begin{array}{l}
\mathbf{if}\;x + 1 \le 1.0000001787741193:\\
\;\;\;\;x + \left(\frac{1}{3} \cdot x - \frac{1}{2}\right) \cdot \left(x \cdot x\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(x + 1\right)\\
\end{array}double f(double x) {
double r3011563 = 1.0;
double r3011564 = x;
double r3011565 = r3011563 + r3011564;
double r3011566 = log(r3011565);
return r3011566;
}
double f(double x) {
double r3011567 = x;
double r3011568 = 1.0;
double r3011569 = r3011567 + r3011568;
double r3011570 = 1.0000001787741193;
bool r3011571 = r3011569 <= r3011570;
double r3011572 = 0.3333333333333333;
double r3011573 = r3011572 * r3011567;
double r3011574 = 0.5;
double r3011575 = r3011573 - r3011574;
double r3011576 = r3011567 * r3011567;
double r3011577 = r3011575 * r3011576;
double r3011578 = r3011567 + r3011577;
double r3011579 = log(r3011569);
double r3011580 = r3011571 ? r3011578 : r3011579;
return r3011580;
}




Bits error versus x
Results
| Original | 39.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if (+ 1 x) < 1.0000001787741193Initial program 59.1
Taylor expanded around 0 0.2
Simplified0.2
if 1.0000001787741193 < (+ 1 x) Initial program 0.2
Final simplification0.2
herbie shell --seed 2019164
(FPCore (x)
:name "ln(1 + x)"
:herbie-target
(if (== (+ 1 x) 1) x (/ (* x (log (+ 1 x))) (- (+ 1 x) 1)))
(log (+ 1 x)))