\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -101.7757910098267331022725556977093219757 \lor \neg \left(x \le 98.00054950125780806047259829938411712646\right):\\
\;\;\;\;2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + {x}^{\left(-3\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sqrt[3]{\frac{1}{x + 1}} \cdot \sqrt[3]{\frac{1}{x + 1}}\right) \cdot \sqrt[3]{\frac{1}{x + 1}} - \frac{2}{x}\right) + \frac{1}{x - 1}\\
\end{array}double f(double x) {
double r291026 = 1.0;
double r291027 = x;
double r291028 = r291027 + r291026;
double r291029 = r291026 / r291028;
double r291030 = 2.0;
double r291031 = r291030 / r291027;
double r291032 = r291029 - r291031;
double r291033 = r291027 - r291026;
double r291034 = r291026 / r291033;
double r291035 = r291032 + r291034;
return r291035;
}
double f(double x) {
double r291036 = x;
double r291037 = -101.77579100982673;
bool r291038 = r291036 <= r291037;
double r291039 = 98.00054950125781;
bool r291040 = r291036 <= r291039;
double r291041 = !r291040;
bool r291042 = r291038 || r291041;
double r291043 = 2.0;
double r291044 = 1.0;
double r291045 = 7.0;
double r291046 = pow(r291036, r291045);
double r291047 = r291044 / r291046;
double r291048 = 5.0;
double r291049 = pow(r291036, r291048);
double r291050 = r291044 / r291049;
double r291051 = 3.0;
double r291052 = -r291051;
double r291053 = pow(r291036, r291052);
double r291054 = r291050 + r291053;
double r291055 = r291047 + r291054;
double r291056 = r291043 * r291055;
double r291057 = 1.0;
double r291058 = r291036 + r291057;
double r291059 = r291057 / r291058;
double r291060 = cbrt(r291059);
double r291061 = r291060 * r291060;
double r291062 = r291061 * r291060;
double r291063 = r291043 / r291036;
double r291064 = r291062 - r291063;
double r291065 = r291036 - r291057;
double r291066 = r291057 / r291065;
double r291067 = r291064 + r291066;
double r291068 = r291042 ? r291056 : r291067;
return r291068;
}




Bits error versus x
Results
| Original | 10.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.0 |
if x < -101.77579100982673 or 98.00054950125781 < x Initial program 20.2
Taylor expanded around inf 0.5
Simplified0.5
rmApplied pow-flip0.0
if -101.77579100982673 < x < 98.00054950125781Initial program 0.0
rmApplied add-cube-cbrt0.0
Final simplification0.0
herbie shell --seed 2019322
(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))))