\log \left(1 + x\right)
\begin{array}{l}
\mathbf{if}\;x + 1 \le 1.0000000000006892:\\
\;\;\;\;x + \left(x \cdot \frac{1}{3} + \frac{-1}{2}\right) \cdot \left(x \cdot x\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(x + 1\right)\\
\end{array}double f(double x) {
double r1404678 = 1.0;
double r1404679 = x;
double r1404680 = r1404678 + r1404679;
double r1404681 = log(r1404680);
return r1404681;
}
double f(double x) {
double r1404682 = x;
double r1404683 = 1.0;
double r1404684 = r1404682 + r1404683;
double r1404685 = 1.0000000000006892;
bool r1404686 = r1404684 <= r1404685;
double r1404687 = 0.3333333333333333;
double r1404688 = r1404682 * r1404687;
double r1404689 = -0.5;
double r1404690 = r1404688 + r1404689;
double r1404691 = r1404682 * r1404682;
double r1404692 = r1404690 * r1404691;
double r1404693 = r1404682 + r1404692;
double r1404694 = log(r1404684);
double r1404695 = r1404686 ? r1404693 : r1404694;
return r1404695;
}




Bits error versus x
Results
| Original | 39.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
if (+ 1 x) < 1.0000000000006892Initial program 59.6
Taylor expanded around 0 0.2
Simplified0.2
if 1.0000000000006892 < (+ 1 x) Initial program 0.7
Final simplification0.4
herbie shell --seed 2019156
(FPCore (x)
:name "ln(1 + x)"
:herbie-target
(if (== (+ 1 x) 1) x (/ (* x (log (+ 1 x))) (- (+ 1 x) 1)))
(log (+ 1 x)))