\log \left(1 + x\right)
\begin{array}{l}
\mathbf{if}\;x \le 9.703167262933319 \cdot 10^{-05}:\\
\;\;\;\;x + \left(x \cdot \left(\frac{-1}{2} + \frac{1}{3} \cdot x\right)\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;\log \left(x + 1\right)\\
\end{array}double f(double x) {
double r2771328 = 1.0;
double r2771329 = x;
double r2771330 = r2771328 + r2771329;
double r2771331 = log(r2771330);
return r2771331;
}
double f(double x) {
double r2771332 = x;
double r2771333 = 9.703167262933319e-05;
bool r2771334 = r2771332 <= r2771333;
double r2771335 = -0.5;
double r2771336 = 0.3333333333333333;
double r2771337 = r2771336 * r2771332;
double r2771338 = r2771335 + r2771337;
double r2771339 = r2771332 * r2771338;
double r2771340 = r2771339 * r2771332;
double r2771341 = r2771332 + r2771340;
double r2771342 = 1.0;
double r2771343 = r2771332 + r2771342;
double r2771344 = log(r2771343);
double r2771345 = r2771334 ? r2771341 : r2771344;
return r2771345;
}




Bits error versus x
Results
| Original | 39.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < 9.703167262933319e-05Initial program 59.0
Taylor expanded around 0 0.2
Simplified0.2
if 9.703167262933319e-05 < x Initial program 0.1
Final simplification0.2
herbie shell --seed 2019104
(FPCore (x)
:name "ln(1 + x)"
:herbie-target
(if (== (+ 1 x) 1) x (/ (* x (log (+ 1 x))) (- (+ 1 x) 1)))
(log (+ 1 x)))