\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -101.7757910098267331022725556977093219757 \lor \neg \left(x \le 101.6588453171347055103979073464870452881\right):\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(x - 1\right) \cdot \left(\left({1}^{\frac{2}{3}} \cdot \sqrt[3]{\frac{1}{x + 1}}\right) \cdot x - \left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot 2\right) + \left(\left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot x\right) \cdot 1}{\left(\left(\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}\right) \cdot x\right) \cdot \left(x - 1\right)}\\
\end{array}double f(double x) {
double r132340 = 1.0;
double r132341 = x;
double r132342 = r132341 + r132340;
double r132343 = r132340 / r132342;
double r132344 = 2.0;
double r132345 = r132344 / r132341;
double r132346 = r132343 - r132345;
double r132347 = r132341 - r132340;
double r132348 = r132340 / r132347;
double r132349 = r132346 + r132348;
return r132349;
}
double f(double x) {
double r132350 = x;
double r132351 = -101.77579100982673;
bool r132352 = r132350 <= r132351;
double r132353 = 101.6588453171347;
bool r132354 = r132350 <= r132353;
double r132355 = !r132354;
bool r132356 = r132352 || r132355;
double r132357 = 2.0;
double r132358 = 7.0;
double r132359 = pow(r132350, r132358);
double r132360 = r132357 / r132359;
double r132361 = 5.0;
double r132362 = pow(r132350, r132361);
double r132363 = r132357 / r132362;
double r132364 = r132357 / r132350;
double r132365 = r132364 / r132350;
double r132366 = r132365 / r132350;
double r132367 = r132363 + r132366;
double r132368 = r132360 + r132367;
double r132369 = 1.0;
double r132370 = r132350 - r132369;
double r132371 = 0.6666666666666666;
double r132372 = pow(r132369, r132371);
double r132373 = r132350 + r132369;
double r132374 = r132369 / r132373;
double r132375 = cbrt(r132374);
double r132376 = r132372 * r132375;
double r132377 = r132376 * r132350;
double r132378 = cbrt(r132373);
double r132379 = r132378 * r132378;
double r132380 = r132379 * r132357;
double r132381 = r132377 - r132380;
double r132382 = r132370 * r132381;
double r132383 = r132379 * r132350;
double r132384 = r132383 * r132369;
double r132385 = r132382 + r132384;
double r132386 = r132383 * r132370;
double r132387 = r132385 / r132386;
double r132388 = r132356 ? r132368 : r132387;
return r132388;
}




Bits error versus x
Results
| Original | 10.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -101.77579100982673 or 101.6588453171347 < x Initial program 20.2
Taylor expanded around inf 0.5
Simplified0.5
rmApplied unpow30.6
Applied associate-/r*0.1
Simplified0.1
if -101.77579100982673 < x < 101.6588453171347Initial program 0.0
rmApplied add-cube-cbrt0.0
rmApplied cbrt-div0.0
Applied cbrt-div0.0
Applied associate-*r/0.0
Applied frac-times0.0
Applied frac-sub0.0
Applied frac-add0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019322
(FPCore (x)
:name "3frac (problem 3.3.3)"
:precision binary64
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))