\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -108.8867958097667:\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{2}{{x}^{3}}\right)\right)\\
\mathbf{elif}\;x \le 129.8241176321693:\\
\;\;\;\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(2, \frac{1}{{x}^{7}}, \mathsf{fma}\left(2, \frac{1}{{x}^{5}}, \frac{\frac{2}{x \cdot x}}{x}\right)\right)\\
\end{array}double f(double x) {
double r132210 = 1.0;
double r132211 = x;
double r132212 = r132211 + r132210;
double r132213 = r132210 / r132212;
double r132214 = 2.0;
double r132215 = r132214 / r132211;
double r132216 = r132213 - r132215;
double r132217 = r132211 - r132210;
double r132218 = r132210 / r132217;
double r132219 = r132216 + r132218;
return r132219;
}
double f(double x) {
double r132220 = x;
double r132221 = -108.88679580976668;
bool r132222 = r132220 <= r132221;
double r132223 = 2.0;
double r132224 = 1.0;
double r132225 = 7.0;
double r132226 = pow(r132220, r132225);
double r132227 = r132224 / r132226;
double r132228 = 5.0;
double r132229 = pow(r132220, r132228);
double r132230 = r132224 / r132229;
double r132231 = 3.0;
double r132232 = pow(r132220, r132231);
double r132233 = r132223 / r132232;
double r132234 = fma(r132223, r132230, r132233);
double r132235 = fma(r132223, r132227, r132234);
double r132236 = 129.8241176321693;
bool r132237 = r132220 <= r132236;
double r132238 = 1.0;
double r132239 = r132220 + r132238;
double r132240 = r132238 / r132239;
double r132241 = r132223 / r132220;
double r132242 = r132240 - r132241;
double r132243 = r132220 - r132238;
double r132244 = r132238 / r132243;
double r132245 = r132242 + r132244;
double r132246 = r132220 * r132220;
double r132247 = r132223 / r132246;
double r132248 = r132247 / r132220;
double r132249 = fma(r132223, r132230, r132248);
double r132250 = fma(r132223, r132227, r132249);
double r132251 = r132237 ? r132245 : r132250;
double r132252 = r132222 ? r132235 : r132251;
return r132252;
}




Bits error versus x
| Original | 9.9 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
if x < -108.88679580976668Initial program 20.3
Taylor expanded around inf 0.4
Simplified0.4
if -108.88679580976668 < x < 129.8241176321693Initial program 0.0
if 129.8241176321693 < x Initial program 19.1
Taylor expanded around inf 0.5
Simplified0.5
rmApplied unpow30.5
Applied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2020065 +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))))