\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -110.3639962943735213229956571012735366821:\\
\;\;\;\;\left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{7}}\right) + \frac{2}{{x}^{3}}\\
\mathbf{elif}\;x \le 108.2804405523375663733531837351620197296:\\
\;\;\;\;\mathsf{fma}\left(1, \frac{1}{x + 1}, -\frac{2}{x}\right) + \frac{1}{x - 1}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{2}{{x}^{5}} + \frac{2}{{x}^{7}}\right) + \frac{\frac{2}{x \cdot x}}{x}\\
\end{array}double f(double x) {
double r74271 = 1.0;
double r74272 = x;
double r74273 = r74272 + r74271;
double r74274 = r74271 / r74273;
double r74275 = 2.0;
double r74276 = r74275 / r74272;
double r74277 = r74274 - r74276;
double r74278 = r74272 - r74271;
double r74279 = r74271 / r74278;
double r74280 = r74277 + r74279;
return r74280;
}
double f(double x) {
double r74281 = x;
double r74282 = -110.36399629437352;
bool r74283 = r74281 <= r74282;
double r74284 = 2.0;
double r74285 = 5.0;
double r74286 = pow(r74281, r74285);
double r74287 = r74284 / r74286;
double r74288 = 7.0;
double r74289 = pow(r74281, r74288);
double r74290 = r74284 / r74289;
double r74291 = r74287 + r74290;
double r74292 = 3.0;
double r74293 = pow(r74281, r74292);
double r74294 = r74284 / r74293;
double r74295 = r74291 + r74294;
double r74296 = 108.28044055233757;
bool r74297 = r74281 <= r74296;
double r74298 = 1.0;
double r74299 = 1.0;
double r74300 = r74281 + r74298;
double r74301 = r74299 / r74300;
double r74302 = r74284 / r74281;
double r74303 = -r74302;
double r74304 = fma(r74298, r74301, r74303);
double r74305 = r74281 - r74298;
double r74306 = r74298 / r74305;
double r74307 = r74304 + r74306;
double r74308 = r74281 * r74281;
double r74309 = r74284 / r74308;
double r74310 = r74309 / r74281;
double r74311 = r74291 + r74310;
double r74312 = r74297 ? r74307 : r74311;
double r74313 = r74283 ? r74295 : r74312;
return r74313;
}




Bits error versus x
| Original | 9.5 |
|---|---|
| Target | 0.3 |
| Herbie | 0.2 |
if x < -110.36399629437352Initial program 19.0
Taylor expanded around inf 0.5
Simplified0.5
if -110.36399629437352 < x < 108.28044055233757Initial program 0.0
rmApplied *-un-lft-identity0.0
Applied div-inv0.0
Applied prod-diff0.0
Applied associate-+l+0.0
Simplified0.0
if 108.28044055233757 < x Initial program 19.3
Taylor expanded around inf 0.5
Simplified0.5
rmApplied unpow30.5
Applied associate-/r*0.1
Final simplification0.2
herbie shell --seed 2019347 +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))))