\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -115.116316502083535 \lor \neg \left(x \le 120.64077220743235\right):\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{3}}\right) + \frac{2}{{x}^{5}}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{x + 1}, \frac{1 \cdot x - \left(x + 1\right) \cdot 2}{x}, \frac{1}{x - 1}\right)\\
\end{array}double f(double x) {
double r146735 = 1.0;
double r146736 = x;
double r146737 = r146736 + r146735;
double r146738 = r146735 / r146737;
double r146739 = 2.0;
double r146740 = r146739 / r146736;
double r146741 = r146738 - r146740;
double r146742 = r146736 - r146735;
double r146743 = r146735 / r146742;
double r146744 = r146741 + r146743;
return r146744;
}
double f(double x) {
double r146745 = x;
double r146746 = -115.11631650208354;
bool r146747 = r146745 <= r146746;
double r146748 = 120.64077220743235;
bool r146749 = r146745 <= r146748;
double r146750 = !r146749;
bool r146751 = r146747 || r146750;
double r146752 = 2.0;
double r146753 = 7.0;
double r146754 = pow(r146745, r146753);
double r146755 = r146752 / r146754;
double r146756 = 3.0;
double r146757 = pow(r146745, r146756);
double r146758 = r146752 / r146757;
double r146759 = r146755 + r146758;
double r146760 = 5.0;
double r146761 = pow(r146745, r146760);
double r146762 = r146752 / r146761;
double r146763 = r146759 + r146762;
double r146764 = 1.0;
double r146765 = 1.0;
double r146766 = r146745 + r146765;
double r146767 = r146764 / r146766;
double r146768 = r146765 * r146745;
double r146769 = r146766 * r146752;
double r146770 = r146768 - r146769;
double r146771 = r146770 / r146745;
double r146772 = r146745 - r146765;
double r146773 = r146765 / r146772;
double r146774 = fma(r146767, r146771, r146773);
double r146775 = r146751 ? r146763 : r146774;
return r146775;
}




Bits error versus x
| Original | 9.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
if x < -115.11631650208354 or 120.64077220743235 < x Initial program 19.1
rmApplied *-un-lft-identity19.1
Applied add-cube-cbrt19.1
Applied times-frac19.1
Applied fma-neg19.1
Simplified19.1
Taylor expanded around inf 0.5
Simplified0.5
if -115.11631650208354 < x < 120.64077220743235Initial program 0.0
rmApplied frac-sub0.0
rmApplied *-un-lft-identity0.0
Applied times-frac0.1
Applied fma-def0.0
Final simplification0.3
herbie shell --seed 2020047 +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))))