\log \left(1 + x\right)
\begin{array}{l}
\mathbf{if}\;x \le 0.00014341067325748845:\\
\;\;\;\;x + \left(x \cdot \left(\frac{-1}{2} + \frac{1}{3} \cdot x\right)\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;\log \left(\sqrt{x + 1}\right) + \log \left(\sqrt{x + 1}\right)\\
\end{array}double f(double x) {
double r1100926 = 1.0;
double r1100927 = x;
double r1100928 = r1100926 + r1100927;
double r1100929 = log(r1100928);
return r1100929;
}
double f(double x) {
double r1100930 = x;
double r1100931 = 0.00014341067325748845;
bool r1100932 = r1100930 <= r1100931;
double r1100933 = -0.5;
double r1100934 = 0.3333333333333333;
double r1100935 = r1100934 * r1100930;
double r1100936 = r1100933 + r1100935;
double r1100937 = r1100930 * r1100936;
double r1100938 = r1100937 * r1100930;
double r1100939 = r1100930 + r1100938;
double r1100940 = 1.0;
double r1100941 = r1100930 + r1100940;
double r1100942 = sqrt(r1100941);
double r1100943 = log(r1100942);
double r1100944 = r1100943 + r1100943;
double r1100945 = r1100932 ? r1100939 : r1100944;
return r1100945;
}




Bits error versus x
Results
| Original | 39.2 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
if x < 0.00014341067325748845Initial program 59.0
Taylor expanded around 0 0.2
Simplified0.2
if 0.00014341067325748845 < x Initial program 0.1
rmApplied add-sqr-sqrt0.1
Applied log-prod0.1
Final simplification0.2
herbie shell --seed 2019128
(FPCore (x)
:name "ln(1 + x)"
:herbie-target
(if (== (+ 1 x) 1) x (/ (* x (log (+ 1 x))) (- (+ 1 x) 1)))
(log (+ 1 x)))