double f(double x) {
double r13002235 = 1.0;
double r13002236 = x;
double r13002237 = r13002236 + r13002235;
double r13002238 = r13002235 / r13002237;
double r13002239 = 2.0;
double r13002240 = r13002239 / r13002236;
double r13002241 = r13002238 - r13002240;
double r13002242 = r13002236 - r13002235;
double r13002243 = r13002235 / r13002242;
double r13002244 = r13002241 + r13002243;
return r13002244;
}
double f(double x) {
double r13002245 = x;
double r13002246 = -0.9912853724188615;
bool r13002247 = r13002245 <= r13002246;
double r13002248 = 2.0;
double r13002249 = 7.0;
double r13002250 = pow(r13002245, r13002249);
double r13002251 = r13002248 / r13002250;
double r13002252 = 5.0;
double r13002253 = pow(r13002245, r13002252);
double r13002254 = r13002248 / r13002253;
double r13002255 = r13002248 / r13002245;
double r13002256 = r13002245 * r13002245;
double r13002257 = r13002255 / r13002256;
double r13002258 = r13002254 + r13002257;
double r13002259 = r13002251 + r13002258;
double r13002260 = 96.01799138170381;
bool r13002261 = r13002245 <= r13002260;
double r13002262 = 1.0;
double r13002263 = r13002245 - r13002262;
double r13002264 = r13002262 / r13002263;
double r13002265 = r13002262 + r13002245;
double r13002266 = sqrt(r13002265);
double r13002267 = r13002262 / r13002266;
double r13002268 = r13002267 * r13002267;
double r13002269 = r13002268 - r13002255;
double r13002270 = r13002264 + r13002269;
double r13002271 = r13002261 ? r13002270 : r13002259;
double r13002272 = r13002247 ? r13002259 : r13002271;
return r13002272;
}
\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9912853724188615:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\right)\\
\mathbf{elif}\;x \le 96.01799138170381:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{\sqrt{1 + x}} \cdot \frac{1}{\sqrt{1 + x}} - \frac{2}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{{x}^{7}} + \left(\frac{2}{{x}^{5}} + \frac{\frac{2}{x}}{x \cdot x}\right)\\
\end{array}



Bits error versus x
| Original | 10.3 |
|---|---|
| Target | 0.2 |
| Herbie | 0.1 |
if x < -0.9912853724188615 or 96.01799138170381 < x Initial program 20.6
Taylor expanded around -inf 0.6
Simplified0.3
if -0.9912853724188615 < x < 96.01799138170381Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied *-un-lft-identity0.0
Applied times-frac0.0
Final simplification0.1
herbie shell --seed 2019101 +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))))