double f(double x) {
double r9890947 = 1.0;
double r9890948 = x;
double r9890949 = r9890947 + r9890948;
double r9890950 = log(r9890949);
return r9890950;
}
double f(double x) {
double r9890951 = x;
double r9890952 = 0.00013052268004736076;
bool r9890953 = r9890951 <= r9890952;
double r9890954 = -0.5;
double r9890955 = 0.3333333333333333;
double r9890956 = r9890955 * r9890951;
double r9890957 = r9890954 + r9890956;
double r9890958 = r9890951 * r9890957;
double r9890959 = r9890958 * r9890951;
double r9890960 = r9890951 + r9890959;
double r9890961 = 1.0;
double r9890962 = r9890951 + r9890961;
double r9890963 = log(r9890962);
double r9890964 = r9890953 ? r9890960 : r9890963;
return r9890964;
}
\log \left(1 + x\right)
\begin{array}{l}
\mathbf{if}\;x \le 0.00013052268004736076:\\
\;\;\;\;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}



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