\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -136532428.39027130603790283203125 \lor \neg \left(x \le 642.4163412587074617476901039481163024902\right):\\
\;\;\;\;\frac{2}{{x}^{5}} + \left(\frac{2}{{x}^{3}} + \frac{2}{{x}^{7}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(1 \cdot x - \left(x + 1\right) \cdot 2\right) \cdot \left(x - 1\right) + \left(\left(x + 1\right) \cdot x\right) \cdot 1}{\left(\left(x + 1\right) \cdot x\right) \cdot \left(x - 1\right)}\\
\end{array}double f(double x) {
double r113924 = 1.0;
double r113925 = x;
double r113926 = r113925 + r113924;
double r113927 = r113924 / r113926;
double r113928 = 2.0;
double r113929 = r113928 / r113925;
double r113930 = r113927 - r113929;
double r113931 = r113925 - r113924;
double r113932 = r113924 / r113931;
double r113933 = r113930 + r113932;
return r113933;
}
double f(double x) {
double r113934 = x;
double r113935 = -136532428.3902713;
bool r113936 = r113934 <= r113935;
double r113937 = 642.4163412587075;
bool r113938 = r113934 <= r113937;
double r113939 = !r113938;
bool r113940 = r113936 || r113939;
double r113941 = 2.0;
double r113942 = 5.0;
double r113943 = pow(r113934, r113942);
double r113944 = r113941 / r113943;
double r113945 = 3.0;
double r113946 = pow(r113934, r113945);
double r113947 = r113941 / r113946;
double r113948 = 7.0;
double r113949 = pow(r113934, r113948);
double r113950 = r113941 / r113949;
double r113951 = r113947 + r113950;
double r113952 = r113944 + r113951;
double r113953 = 1.0;
double r113954 = r113953 * r113934;
double r113955 = r113934 + r113953;
double r113956 = r113955 * r113941;
double r113957 = r113954 - r113956;
double r113958 = r113934 - r113953;
double r113959 = r113957 * r113958;
double r113960 = r113955 * r113934;
double r113961 = r113960 * r113953;
double r113962 = r113959 + r113961;
double r113963 = r113960 * r113958;
double r113964 = r113962 / r113963;
double r113965 = r113940 ? r113952 : r113964;
return r113965;
}




Bits error versus x
Results
| Original | 9.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
if x < -136532428.3902713 or 642.4163412587075 < x Initial program 19.1
rmApplied add-cube-cbrt52.5
Taylor expanded around inf 0.5
Simplified0.5
if -136532428.3902713 < x < 642.4163412587075Initial program 0.3
rmApplied frac-sub0.3
Applied frac-add0.0
Final simplification0.3
herbie shell --seed 2019347
(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))))