\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -97.68596649479380289449181873351335525513 \lor \neg \left(x \le 108.8580563138250454358058050274848937988\right):\\
\;\;\;\;\frac{2}{{x}^{3}} + \left(\frac{2}{{x}^{7}} + \frac{2}{{x}^{5}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{\sqrt{1}}{\sqrt[3]{x - 1} \cdot \sqrt[3]{x - 1}} \cdot \frac{\sqrt{1}}{\sqrt[3]{x - 1}}\\
\end{array}double f(double x) {
double r244153 = 1.0;
double r244154 = x;
double r244155 = r244154 + r244153;
double r244156 = r244153 / r244155;
double r244157 = 2.0;
double r244158 = r244157 / r244154;
double r244159 = r244156 - r244158;
double r244160 = r244154 - r244153;
double r244161 = r244153 / r244160;
double r244162 = r244159 + r244161;
return r244162;
}
double f(double x) {
double r244163 = x;
double r244164 = -97.6859664947938;
bool r244165 = r244163 <= r244164;
double r244166 = 108.85805631382505;
bool r244167 = r244163 <= r244166;
double r244168 = !r244167;
bool r244169 = r244165 || r244168;
double r244170 = 2.0;
double r244171 = 3.0;
double r244172 = pow(r244163, r244171);
double r244173 = r244170 / r244172;
double r244174 = 7.0;
double r244175 = pow(r244163, r244174);
double r244176 = r244170 / r244175;
double r244177 = 5.0;
double r244178 = pow(r244163, r244177);
double r244179 = r244170 / r244178;
double r244180 = r244176 + r244179;
double r244181 = r244173 + r244180;
double r244182 = 1.0;
double r244183 = r244163 + r244182;
double r244184 = r244182 / r244183;
double r244185 = r244170 / r244163;
double r244186 = r244184 - r244185;
double r244187 = sqrt(r244182);
double r244188 = r244163 - r244182;
double r244189 = cbrt(r244188);
double r244190 = r244189 * r244189;
double r244191 = r244187 / r244190;
double r244192 = r244187 / r244189;
double r244193 = r244191 * r244192;
double r244194 = r244186 + r244193;
double r244195 = r244169 ? r244181 : r244194;
return r244195;
}




Bits error versus x
Results
| Original | 10.0 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
if x < -97.6859664947938 or 108.85805631382505 < x Initial program 20.2
Taylor expanded around inf 0.6
Simplified0.6
if -97.6859664947938 < x < 108.85805631382505Initial program 0.0
rmApplied add-cube-cbrt0.1
Applied add-sqr-sqrt0.1
Applied times-frac0.1
Final simplification0.3
herbie shell --seed 2019351
(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))))