\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.995295059253408442856425608624704182148 \lor \neg \left(x \le 120.6357054631158973734272876754403114319\right):\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right) + \frac{\frac{2}{x \cdot x}}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{1}{\sqrt{x + 1}}}{\sqrt{x + 1}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\end{array}double f(double x) {
double r227205 = 1.0;
double r227206 = x;
double r227207 = r227206 + r227205;
double r227208 = r227205 / r227207;
double r227209 = 2.0;
double r227210 = r227209 / r227206;
double r227211 = r227208 - r227210;
double r227212 = r227206 - r227205;
double r227213 = r227205 / r227212;
double r227214 = r227211 + r227213;
return r227214;
}
double f(double x) {
double r227215 = x;
double r227216 = -0.9952950592534084;
bool r227217 = r227215 <= r227216;
double r227218 = 120.6357054631159;
bool r227219 = r227215 <= r227218;
double r227220 = !r227219;
bool r227221 = r227217 || r227220;
double r227222 = 2.0;
double r227223 = 7.0;
double r227224 = pow(r227215, r227223);
double r227225 = r227222 / r227224;
double r227226 = 5.0;
double r227227 = pow(r227215, r227226);
double r227228 = r227222 / r227227;
double r227229 = r227225 + r227228;
double r227230 = r227215 * r227215;
double r227231 = r227222 / r227230;
double r227232 = r227231 / r227215;
double r227233 = r227229 + r227232;
double r227234 = 1.0;
double r227235 = r227215 + r227234;
double r227236 = sqrt(r227235);
double r227237 = r227234 / r227236;
double r227238 = r227237 / r227236;
double r227239 = r227222 / r227215;
double r227240 = r227238 - r227239;
double r227241 = r227215 - r227234;
double r227242 = r227234 / r227241;
double r227243 = r227240 + r227242;
double r227244 = r227221 ? r227233 : r227243;
return r227244;
}




Bits error versus x
Results
| Original | 9.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.1 |
if x < -0.9952950592534084 or 120.6357054631159 < x Initial program 20.2
rmApplied add-sqr-sqrt50.2
Applied associate-/r*52.4
Taylor expanded around inf 0.8
Simplified0.8
rmApplied unpow30.8
Applied associate-/r*0.3
if -0.9952950592534084 < x < 120.6357054631159Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied associate-/r*0.0
Final simplification0.1
herbie shell --seed 2019350 +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))))