\log \left(1 + x\right)
\begin{array}{l}
\mathbf{if}\;x + 1 \le 1.0000000000502987:\\
\;\;\;\;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 r1552551 = 1.0;
double r1552552 = x;
double r1552553 = r1552551 + r1552552;
double r1552554 = log(r1552553);
return r1552554;
}
double f(double x) {
double r1552555 = x;
double r1552556 = 1.0;
double r1552557 = r1552555 + r1552556;
double r1552558 = 1.0000000000502987;
bool r1552559 = r1552557 <= r1552558;
double r1552560 = 0.3333333333333333;
double r1552561 = r1552560 * r1552555;
double r1552562 = 0.5;
double r1552563 = r1552561 - r1552562;
double r1552564 = r1552555 * r1552555;
double r1552565 = r1552563 * r1552564;
double r1552566 = r1552555 + r1552565;
double r1552567 = log(r1552557);
double r1552568 = r1552559 ? r1552566 : r1552567;
return r1552568;
}




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