\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -117.2709864418915515216212952509522438049:\\
\;\;\;\;\frac{\frac{\frac{2}{x}}{x}}{x} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 115.5593852642430903188142110593616962433:\\
\;\;\;\;\frac{1 \cdot x - \left(x + 1\right) \cdot 2}{\left(x + 1\right) \cdot x} + \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 r101263 = 1.0;
double r101264 = x;
double r101265 = r101264 + r101263;
double r101266 = r101263 / r101265;
double r101267 = 2.0;
double r101268 = r101267 / r101264;
double r101269 = r101266 - r101268;
double r101270 = r101264 - r101263;
double r101271 = r101263 / r101270;
double r101272 = r101269 + r101271;
return r101272;
}
double f(double x) {
double r101273 = x;
double r101274 = -117.27098644189155;
bool r101275 = r101273 <= r101274;
double r101276 = 2.0;
double r101277 = r101276 / r101273;
double r101278 = r101277 / r101273;
double r101279 = r101278 / r101273;
double r101280 = 7.0;
double r101281 = pow(r101273, r101280);
double r101282 = r101276 / r101281;
double r101283 = 5.0;
double r101284 = pow(r101273, r101283);
double r101285 = r101276 / r101284;
double r101286 = r101282 + r101285;
double r101287 = r101279 + r101286;
double r101288 = 115.55938526424309;
bool r101289 = r101273 <= r101288;
double r101290 = 1.0;
double r101291 = r101290 * r101273;
double r101292 = r101273 + r101290;
double r101293 = r101292 * r101276;
double r101294 = r101291 - r101293;
double r101295 = r101292 * r101273;
double r101296 = r101294 / r101295;
double r101297 = r101273 - r101290;
double r101298 = r101290 / r101297;
double r101299 = r101296 + r101298;
double r101300 = r101273 * r101273;
double r101301 = r101277 / r101300;
double r101302 = r101301 + r101286;
double r101303 = r101289 ? r101299 : r101302;
double r101304 = r101275 ? r101287 : r101303;
return r101304;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
if x < -117.27098644189155Initial program 20.5
rmApplied frac-sub52.6
Taylor expanded around inf 0.3
Simplified0.3
rmApplied cube-mult0.4
Applied associate-/r*0.1
rmApplied associate-/r*0.1
if -117.27098644189155 < x < 115.55938526424309Initial program 0.0
rmApplied frac-sub0.0
if 115.55938526424309 < x Initial program 18.8
rmApplied frac-sub51.6
Taylor expanded around inf 0.6
Simplified0.6
rmApplied cube-mult0.6
Applied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019303 +o rules:numerics
(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))))