\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -113.57820944408793:\\
\;\;\;\;\frac{\frac{\frac{2}{x}}{x}}{x} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 111.69425311390617:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{2}{x}}{x \cdot x} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\end{array}double f(double x) {
double r5778285 = 1.0;
double r5778286 = x;
double r5778287 = r5778286 + r5778285;
double r5778288 = r5778285 / r5778287;
double r5778289 = 2.0;
double r5778290 = r5778289 / r5778286;
double r5778291 = r5778288 - r5778290;
double r5778292 = r5778286 - r5778285;
double r5778293 = r5778285 / r5778292;
double r5778294 = r5778291 + r5778293;
return r5778294;
}
double f(double x) {
double r5778295 = x;
double r5778296 = -113.57820944408793;
bool r5778297 = r5778295 <= r5778296;
double r5778298 = 2.0;
double r5778299 = r5778298 / r5778295;
double r5778300 = r5778299 / r5778295;
double r5778301 = r5778300 / r5778295;
double r5778302 = 7.0;
double r5778303 = pow(r5778295, r5778302);
double r5778304 = r5778298 / r5778303;
double r5778305 = 5.0;
double r5778306 = pow(r5778295, r5778305);
double r5778307 = r5778298 / r5778306;
double r5778308 = r5778304 + r5778307;
double r5778309 = r5778301 + r5778308;
double r5778310 = 111.69425311390617;
bool r5778311 = r5778295 <= r5778310;
double r5778312 = 1.0;
double r5778313 = r5778312 + r5778295;
double r5778314 = r5778312 / r5778313;
double r5778315 = r5778314 - r5778299;
double r5778316 = r5778295 - r5778312;
double r5778317 = r5778312 / r5778316;
double r5778318 = r5778315 + r5778317;
double r5778319 = r5778295 * r5778295;
double r5778320 = r5778299 / r5778319;
double r5778321 = r5778320 + r5778308;
double r5778322 = r5778311 ? r5778318 : r5778321;
double r5778323 = r5778297 ? r5778309 : r5778322;
return r5778323;
}




Bits error versus x
Results
| Original | 9.1 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
if x < -113.57820944408793Initial program 18.4
Taylor expanded around -inf 0.5
Simplified0.5
rmApplied associate-/r*0.1
Taylor expanded around inf 0.5
Simplified0.1
if -113.57820944408793 < x < 111.69425311390617Initial program 0.1
if 111.69425311390617 < x Initial program 18.7
Taylor expanded around -inf 0.4
Simplified0.4
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019142 +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))))