\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -93.412061148281623 \lor \neg \left(x \le 98.642881580886154\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{\frac{1}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}}\\
\end{array}double f(double x) {
double r144250 = 1.0;
double r144251 = x;
double r144252 = r144251 + r144250;
double r144253 = r144250 / r144252;
double r144254 = 2.0;
double r144255 = r144254 / r144251;
double r144256 = r144253 - r144255;
double r144257 = r144251 - r144250;
double r144258 = r144250 / r144257;
double r144259 = r144256 + r144258;
return r144259;
}
double f(double x) {
double r144260 = x;
double r144261 = -93.41206114828162;
bool r144262 = r144260 <= r144261;
double r144263 = 98.64288158088615;
bool r144264 = r144260 <= r144263;
double r144265 = !r144264;
bool r144266 = r144262 || r144265;
double r144267 = 2.0;
double r144268 = 1.0;
double r144269 = 7.0;
double r144270 = pow(r144260, r144269);
double r144271 = r144268 / r144270;
double r144272 = 5.0;
double r144273 = pow(r144260, r144272);
double r144274 = r144268 / r144273;
double r144275 = 3.0;
double r144276 = -r144275;
double r144277 = pow(r144260, r144276);
double r144278 = r144274 + r144277;
double r144279 = r144271 + r144278;
double r144280 = r144267 * r144279;
double r144281 = 1.0;
double r144282 = r144260 + r144281;
double r144283 = r144281 / r144282;
double r144284 = r144267 / r144260;
double r144285 = r144283 - r144284;
double r144286 = r144260 - r144281;
double r144287 = cbrt(r144286);
double r144288 = r144287 * r144287;
double r144289 = r144281 / r144288;
double r144290 = r144289 / r144287;
double r144291 = r144285 + r144290;
double r144292 = r144266 ? r144280 : r144291;
return r144292;
}




Bits error versus x
Results
| Original | 9.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -93.41206114828162 or 98.64288158088615 < x Initial program 19.1
Taylor expanded around inf 0.5
Simplified0.5
rmApplied pow-flip0.0
if -93.41206114828162 < x < 98.64288158088615Initial program 0.0
rmApplied add-cube-cbrt0.1
Applied associate-/r*0.1
Final simplification0.0
herbie shell --seed 2020021
(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))))