\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -17754.39869344371254555881023406982421875 \lor \neg \left(x \le 1913.506658456775085141998715698719024658\right):\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 \cdot x - \left(x + 1\right) \cdot 2\right) \cdot \left(x - 1\right) + \left(\left(x + 1\right) \cdot x\right) \cdot 1}{\left(\left(x + 1\right) \cdot x\right) \cdot \left(x - 1\right)}\\
\end{array}double f(double x) {
double r115313 = 1.0;
double r115314 = x;
double r115315 = r115314 + r115313;
double r115316 = r115313 / r115315;
double r115317 = 2.0;
double r115318 = r115317 / r115314;
double r115319 = r115316 - r115318;
double r115320 = r115314 - r115313;
double r115321 = r115313 / r115320;
double r115322 = r115319 + r115321;
return r115322;
}
double f(double x) {
double r115323 = x;
double r115324 = -17754.398693443713;
bool r115325 = r115323 <= r115324;
double r115326 = 1913.506658456775;
bool r115327 = r115323 <= r115326;
double r115328 = !r115327;
bool r115329 = r115325 || r115328;
double r115330 = 2.0;
double r115331 = 7.0;
double r115332 = pow(r115323, r115331);
double r115333 = r115330 / r115332;
double r115334 = 5.0;
double r115335 = pow(r115323, r115334);
double r115336 = r115330 / r115335;
double r115337 = r115330 / r115323;
double r115338 = r115323 * r115323;
double r115339 = r115337 / r115338;
double r115340 = r115336 + r115339;
double r115341 = r115333 + r115340;
double r115342 = 1.0;
double r115343 = r115342 * r115323;
double r115344 = r115323 + r115342;
double r115345 = r115344 * r115330;
double r115346 = r115343 - r115345;
double r115347 = r115323 - r115342;
double r115348 = r115346 * r115347;
double r115349 = r115344 * r115323;
double r115350 = r115349 * r115342;
double r115351 = r115348 + r115350;
double r115352 = r115349 * r115347;
double r115353 = r115351 / r115352;
double r115354 = r115329 ? r115341 : r115353;
return r115354;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -17754.398693443713 or 1913.506658456775 < x Initial program 19.6
Taylor expanded around inf 0.5
Simplified0.5
rmApplied cube-mult0.5
Applied associate-/r*0.1
if -17754.398693443713 < x < 1913.506658456775Initial program 0.2
rmApplied frac-sub0.2
Applied frac-add0.0
Final simplification0.1
herbie shell --seed 2019325
(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))))