\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -127.7718829905971:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{x \cdot \left(x \cdot x\right)} + \frac{2}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 131.99974585670387:\\
\;\;\;\;\frac{\mathsf{fma}\left(\left(x - 2 \cdot \left(1 + x\right)\right), \left(x + -1\right), \left(x \cdot \left(1 + x\right)\right)\right)}{\left(x \cdot \left(1 + x\right)\right) \cdot \left(x + -1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{x \cdot \left(x \cdot x\right)} + \frac{2}{{x}^{5}}\right)\\
\end{array}double f(double x) {
double r3350195 = 1.0;
double r3350196 = x;
double r3350197 = r3350196 + r3350195;
double r3350198 = r3350195 / r3350197;
double r3350199 = 2.0;
double r3350200 = r3350199 / r3350196;
double r3350201 = r3350198 - r3350200;
double r3350202 = r3350196 - r3350195;
double r3350203 = r3350195 / r3350202;
double r3350204 = r3350201 + r3350203;
return r3350204;
}
double f(double x) {
double r3350205 = x;
double r3350206 = -127.7718829905971;
bool r3350207 = r3350205 <= r3350206;
double r3350208 = 2.0;
double r3350209 = 7.0;
double r3350210 = pow(r3350205, r3350209);
double r3350211 = r3350208 / r3350210;
double r3350212 = r3350205 * r3350205;
double r3350213 = r3350205 * r3350212;
double r3350214 = r3350208 / r3350213;
double r3350215 = 5.0;
double r3350216 = pow(r3350205, r3350215);
double r3350217 = r3350208 / r3350216;
double r3350218 = r3350214 + r3350217;
double r3350219 = r3350211 + r3350218;
double r3350220 = 131.99974585670387;
bool r3350221 = r3350205 <= r3350220;
double r3350222 = 1.0;
double r3350223 = r3350222 + r3350205;
double r3350224 = r3350208 * r3350223;
double r3350225 = r3350205 - r3350224;
double r3350226 = -1.0;
double r3350227 = r3350205 + r3350226;
double r3350228 = r3350205 * r3350223;
double r3350229 = fma(r3350225, r3350227, r3350228);
double r3350230 = r3350228 * r3350227;
double r3350231 = r3350229 / r3350230;
double r3350232 = r3350221 ? r3350231 : r3350219;
double r3350233 = r3350207 ? r3350219 : r3350232;
return r3350233;
}




Bits error versus x
| Original | 9.8 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
if x < -127.7718829905971 or 131.99974585670387 < x Initial program 19.8
Taylor expanded around -inf 0.7
Simplified0.7
if -127.7718829905971 < x < 131.99974585670387Initial program 0.0
rmApplied frac-sub0.1
Applied frac-add0.0
Simplified0.0
Simplified0.0
Final simplification0.4
herbie shell --seed 2019132 +o rules:numerics
(FPCore (x)
:name "3frac (problem 3.3.3)"
:herbie-target
(/ 2 (* x (- (* x x) 1)))
(+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))))