\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -126.42895798832238:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right)\\
\mathbf{elif}\;x \le 110.24708161365915:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{\frac{2}{x}}{x}}{x}\right)\\
\end{array}double f(double x) {
double r12444291 = 1.0;
double r12444292 = x;
double r12444293 = r12444292 + r12444291;
double r12444294 = r12444291 / r12444293;
double r12444295 = 2.0;
double r12444296 = r12444295 / r12444292;
double r12444297 = r12444294 - r12444296;
double r12444298 = r12444292 - r12444291;
double r12444299 = r12444291 / r12444298;
double r12444300 = r12444297 + r12444299;
return r12444300;
}
double f(double x) {
double r12444301 = x;
double r12444302 = -126.42895798832238;
bool r12444303 = r12444301 <= r12444302;
double r12444304 = 2.0;
double r12444305 = 7.0;
double r12444306 = pow(r12444301, r12444305);
double r12444307 = r12444304 / r12444306;
double r12444308 = 5.0;
double r12444309 = pow(r12444301, r12444308);
double r12444310 = r12444304 / r12444309;
double r12444311 = r12444304 / r12444301;
double r12444312 = r12444311 / r12444301;
double r12444313 = r12444312 / r12444301;
double r12444314 = r12444310 + r12444313;
double r12444315 = r12444307 + r12444314;
double r12444316 = 110.24708161365915;
bool r12444317 = r12444301 <= r12444316;
double r12444318 = 1.0;
double r12444319 = r12444318 + r12444301;
double r12444320 = r12444318 / r12444319;
double r12444321 = r12444320 - r12444311;
double r12444322 = r12444301 - r12444318;
double r12444323 = r12444318 / r12444322;
double r12444324 = r12444321 + r12444323;
double r12444325 = r12444317 ? r12444324 : r12444315;
double r12444326 = r12444303 ? r12444315 : r12444325;
return r12444326;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -126.42895798832238 or 110.24708161365915 < x Initial program 19.9
Taylor expanded around inf 0.5
Simplified0.1
rmApplied associate-/r*0.1
if -126.42895798832238 < x < 110.24708161365915Initial program 0.0
Final simplification0.1
herbie shell --seed 2019104 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))