\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -674651.752665766398 \lor \neg \left(x \le 480.38612570457826\right):\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, 2 \cdot {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(1, \left(x - 1\right) \cdot x, \left(x + 1\right) \cdot \left(1 \cdot x - \left(x - 1\right) \cdot 2\right)\right)}{\left(x + 1\right) \cdot \left(\left(x - 1\right) \cdot x\right)}\\
\end{array}double f(double x) {
double r183275 = 1.0;
double r183276 = x;
double r183277 = r183276 + r183275;
double r183278 = r183275 / r183277;
double r183279 = 2.0;
double r183280 = r183279 / r183276;
double r183281 = r183278 - r183280;
double r183282 = r183276 - r183275;
double r183283 = r183275 / r183282;
double r183284 = r183281 + r183283;
return r183284;
}
double f(double x) {
double r183285 = x;
double r183286 = -674651.7526657664;
bool r183287 = r183285 <= r183286;
double r183288 = 480.38612570457826;
bool r183289 = r183285 <= r183288;
double r183290 = !r183289;
bool r183291 = r183287 || r183290;
double r183292 = 2.0;
double r183293 = 1.0;
double r183294 = 7.0;
double r183295 = pow(r183285, r183294);
double r183296 = r183293 / r183295;
double r183297 = 5.0;
double r183298 = pow(r183285, r183297);
double r183299 = r183293 / r183298;
double r183300 = 3.0;
double r183301 = -r183300;
double r183302 = pow(r183285, r183301);
double r183303 = r183292 * r183302;
double r183304 = fma(r183292, r183299, r183303);
double r183305 = fma(r183292, r183296, r183304);
double r183306 = 1.0;
double r183307 = r183285 - r183306;
double r183308 = r183307 * r183285;
double r183309 = r183285 + r183306;
double r183310 = r183306 * r183285;
double r183311 = r183307 * r183292;
double r183312 = r183310 - r183311;
double r183313 = r183309 * r183312;
double r183314 = fma(r183306, r183308, r183313);
double r183315 = r183309 * r183308;
double r183316 = r183314 / r183315;
double r183317 = r183291 ? r183305 : r183316;
return r183317;
}




Bits error versus x
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -674651.7526657664 or 480.38612570457826 < x Initial program 19.6
rmApplied sub-neg19.6
Applied associate-+l+19.6
Simplified19.6
Taylor expanded around inf 0.5
Simplified0.5
rmApplied pow-flip0.0
if -674651.7526657664 < x < 480.38612570457826Initial program 0.2
rmApplied sub-neg0.2
Applied associate-+l+0.2
Simplified0.2
rmApplied frac-sub0.2
Applied frac-add0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020036 +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))))