\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{2}{{x}^{3}} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\end{array}double f(double x) {
double r84031 = 1.0;
double r84032 = x;
double r84033 = r84032 + r84031;
double r84034 = r84031 / r84033;
double r84035 = 2.0;
double r84036 = r84035 / r84032;
double r84037 = r84034 - r84036;
double r84038 = r84032 - r84031;
double r84039 = r84031 / r84038;
double r84040 = r84037 + r84039;
return r84040;
}
double f(double x) {
double r84041 = x;
double r84042 = -117.27098644189155;
bool r84043 = r84041 <= r84042;
double r84044 = 2.0;
double r84045 = r84044 / r84041;
double r84046 = r84045 / r84041;
double r84047 = r84046 / r84041;
double r84048 = 7.0;
double r84049 = pow(r84041, r84048);
double r84050 = r84044 / r84049;
double r84051 = 5.0;
double r84052 = pow(r84041, r84051);
double r84053 = r84044 / r84052;
double r84054 = r84050 + r84053;
double r84055 = r84047 + r84054;
double r84056 = 115.55938526424309;
bool r84057 = r84041 <= r84056;
double r84058 = 1.0;
double r84059 = r84058 * r84041;
double r84060 = r84041 + r84058;
double r84061 = r84060 * r84044;
double r84062 = r84059 - r84061;
double r84063 = r84060 * r84041;
double r84064 = r84062 / r84063;
double r84065 = r84041 - r84058;
double r84066 = r84058 / r84065;
double r84067 = r84064 + r84066;
double r84068 = 3.0;
double r84069 = pow(r84041, r84068);
double r84070 = r84044 / r84069;
double r84071 = r84070 + r84054;
double r84072 = r84057 ? r84067 : r84071;
double r84073 = r84043 ? r84055 : r84072;
return r84073;
}




Bits error versus x
Results
| Original | 9.8 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
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
Final simplification0.2
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))))