\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -24271205.0909876414 \lor \neg \left(x \le 43997267.71868038\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\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 r112917 = 1.0;
double r112918 = x;
double r112919 = r112918 + r112917;
double r112920 = r112917 / r112919;
double r112921 = 2.0;
double r112922 = r112921 / r112918;
double r112923 = r112920 - r112922;
double r112924 = r112918 - r112917;
double r112925 = r112917 / r112924;
double r112926 = r112923 + r112925;
return r112926;
}
double f(double x) {
double r112927 = x;
double r112928 = -24271205.09098764;
bool r112929 = r112927 <= r112928;
double r112930 = 43997267.71868038;
bool r112931 = r112927 <= r112930;
double r112932 = !r112931;
bool r112933 = r112929 || r112932;
double r112934 = 2.0;
double r112935 = 1.0;
double r112936 = 7.0;
double r112937 = pow(r112927, r112936);
double r112938 = r112935 / r112937;
double r112939 = 5.0;
double r112940 = pow(r112927, r112939);
double r112941 = r112935 / r112940;
double r112942 = 3.0;
double r112943 = -r112942;
double r112944 = pow(r112927, r112943);
double r112945 = r112941 + r112944;
double r112946 = r112938 + r112945;
double r112947 = r112934 * r112946;
double r112948 = 1.0;
double r112949 = r112948 * r112927;
double r112950 = r112927 + r112948;
double r112951 = r112950 * r112934;
double r112952 = r112949 - r112951;
double r112953 = r112927 - r112948;
double r112954 = r112952 * r112953;
double r112955 = r112950 * r112927;
double r112956 = r112955 * r112948;
double r112957 = r112954 + r112956;
double r112958 = r112955 * r112953;
double r112959 = r112957 / r112958;
double r112960 = r112933 ? r112947 : r112959;
return r112960;
}




Bits error versus x
Results
| Original | 10.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -24271205.09098764 or 43997267.71868038 < x Initial program 20.2
Taylor expanded around inf 0.6
Simplified0.6
rmApplied pow-flip0.0
if -24271205.09098764 < x < 43997267.71868038Initial program 0.7
rmApplied frac-sub0.7
Applied frac-add0.0
Final simplification0.0
herbie shell --seed 2020064
(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))))