\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -94.26011724378388:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{2}{\left(x \cdot x\right) \cdot x}\right)\\
\mathbf{elif}\;x \le 104.89296465505318:\\
\;\;\;\;\left(\frac{1}{1 + x} - \frac{2}{x}\right) + \left((\left(\frac{-2}{\sqrt[3]{x}}\right) \cdot \left(\frac{1}{\sqrt[3]{x} \cdot \sqrt[3]{x}}\right) + \left(\frac{2}{\sqrt[3]{x}} \cdot \frac{1}{\sqrt[3]{x} \cdot \sqrt[3]{x}}\right))_* + \frac{1}{x - 1}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + (\left(\frac{2}{x}\right) \cdot \left(\frac{1}{x \cdot x}\right) + \left(\frac{2}{{x}^{5}}\right))_*\\
\end{array}double f(double x) {
double r13719254 = 1.0;
double r13719255 = x;
double r13719256 = r13719255 + r13719254;
double r13719257 = r13719254 / r13719256;
double r13719258 = 2.0;
double r13719259 = r13719258 / r13719255;
double r13719260 = r13719257 - r13719259;
double r13719261 = r13719255 - r13719254;
double r13719262 = r13719254 / r13719261;
double r13719263 = r13719260 + r13719262;
return r13719263;
}
double f(double x) {
double r13719264 = x;
double r13719265 = -94.26011724378388;
bool r13719266 = r13719264 <= r13719265;
double r13719267 = 2.0;
double r13719268 = 7.0;
double r13719269 = pow(r13719264, r13719268);
double r13719270 = r13719267 / r13719269;
double r13719271 = 5.0;
double r13719272 = pow(r13719264, r13719271);
double r13719273 = r13719267 / r13719272;
double r13719274 = r13719264 * r13719264;
double r13719275 = r13719274 * r13719264;
double r13719276 = r13719267 / r13719275;
double r13719277 = r13719273 + r13719276;
double r13719278 = r13719270 + r13719277;
double r13719279 = 104.89296465505318;
bool r13719280 = r13719264 <= r13719279;
double r13719281 = 1.0;
double r13719282 = r13719281 + r13719264;
double r13719283 = r13719281 / r13719282;
double r13719284 = r13719267 / r13719264;
double r13719285 = r13719283 - r13719284;
double r13719286 = -2.0;
double r13719287 = cbrt(r13719264);
double r13719288 = r13719286 / r13719287;
double r13719289 = r13719287 * r13719287;
double r13719290 = r13719281 / r13719289;
double r13719291 = r13719267 / r13719287;
double r13719292 = r13719291 * r13719290;
double r13719293 = fma(r13719288, r13719290, r13719292);
double r13719294 = r13719264 - r13719281;
double r13719295 = r13719281 / r13719294;
double r13719296 = r13719293 + r13719295;
double r13719297 = r13719285 + r13719296;
double r13719298 = r13719281 / r13719274;
double r13719299 = fma(r13719284, r13719298, r13719273);
double r13719300 = r13719270 + r13719299;
double r13719301 = r13719280 ? r13719297 : r13719300;
double r13719302 = r13719266 ? r13719278 : r13719301;
return r13719302;
}




Bits error versus x
| Original | 10.0 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -94.26011724378388Initial program 20.3
Taylor expanded around -inf 0.5
Simplified0.1
Taylor expanded around inf 0.5
Simplified0.6
if -94.26011724378388 < x < 104.89296465505318Initial program 0.0
rmApplied add-cube-cbrt1.5
Applied *-un-lft-identity1.5
Applied times-frac1.5
Applied *-un-lft-identity1.5
Applied *-un-lft-identity1.5
Applied times-frac1.5
Applied prod-diff1.5
Applied associate-+l+1.5
Simplified0.0
if 104.89296465505318 < x Initial program 19.8
Taylor expanded around -inf 0.5
Simplified0.1
rmApplied div-inv0.1
Applied fma-def0.1
Final simplification0.2
herbie shell --seed 2019119 +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))))