\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le -820.7230653166270712972618639469146728516 \lor \neg \left(\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1} \le 1.165750241282313692803285221089026890695 \cdot 10^{-8}\right):\\
\;\;\;\;1 \cdot \left(\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(2 \cdot \left(\frac{1}{{x}^{7}} + \left(\frac{1}{{x}^{5}} + \frac{1}{{x}^{3}}\right)\right)\right)\\
\end{array}double f(double x) {
double r83007 = 1.0;
double r83008 = x;
double r83009 = r83008 + r83007;
double r83010 = r83007 / r83009;
double r83011 = 2.0;
double r83012 = r83011 / r83008;
double r83013 = r83010 - r83012;
double r83014 = r83008 - r83007;
double r83015 = r83007 / r83014;
double r83016 = r83013 + r83015;
return r83016;
}
double f(double x) {
double r83017 = 1.0;
double r83018 = x;
double r83019 = r83018 + r83017;
double r83020 = r83017 / r83019;
double r83021 = 2.0;
double r83022 = r83021 / r83018;
double r83023 = r83020 - r83022;
double r83024 = r83018 - r83017;
double r83025 = r83017 / r83024;
double r83026 = r83023 + r83025;
double r83027 = -820.7230653166271;
bool r83028 = r83026 <= r83027;
double r83029 = 1.1657502412823137e-08;
bool r83030 = r83026 <= r83029;
double r83031 = !r83030;
bool r83032 = r83028 || r83031;
double r83033 = 1.0;
double r83034 = r83033 * r83026;
double r83035 = 7.0;
double r83036 = pow(r83018, r83035);
double r83037 = r83033 / r83036;
double r83038 = 5.0;
double r83039 = pow(r83018, r83038);
double r83040 = r83033 / r83039;
double r83041 = 3.0;
double r83042 = pow(r83018, r83041);
double r83043 = r83033 / r83042;
double r83044 = r83040 + r83043;
double r83045 = r83037 + r83044;
double r83046 = r83021 * r83045;
double r83047 = r83033 * r83046;
double r83048 = r83032 ? r83034 : r83047;
return r83048;
}




Bits error versus x
Results
| Original | 10.1 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
if (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) < -820.7230653166271 or 1.1657502412823137e-08 < (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) Initial program 0.0
rmApplied flip-+32.6
rmApplied flip--32.6
Applied associate-/r/32.6
Simplified0.0
if -820.7230653166271 < (+ (- (/ 1.0 (+ x 1.0)) (/ 2.0 x)) (/ 1.0 (- x 1.0))) < 1.1657502412823137e-08Initial program 20.1
rmApplied flip-+20.1
rmApplied flip--62.9
Applied associate-/r/62.9
Simplified20.1
Taylor expanded around inf 0.8
Simplified0.8
Final simplification0.4
herbie shell --seed 2019297
(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))))