\left(\frac{1}{x + 1} - \frac{2}{x}\right) + \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right) \le -193524134.39225513:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right)\\
\mathbf{elif}\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right) \le 0.0:\\
\;\;\;\;\left(\frac{2}{{x}^{7}} + \frac{2}{\left(x \cdot x\right) \cdot x}\right) + \frac{2}{{x}^{5}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{x - 1} + \left(\frac{1}{x + 1} - \frac{2}{x}\right)\\
\end{array}double f(double x) {
double r4175858 = 1.0;
double r4175859 = x;
double r4175860 = r4175859 + r4175858;
double r4175861 = r4175858 / r4175860;
double r4175862 = 2.0;
double r4175863 = r4175862 / r4175859;
double r4175864 = r4175861 - r4175863;
double r4175865 = r4175859 - r4175858;
double r4175866 = r4175858 / r4175865;
double r4175867 = r4175864 + r4175866;
return r4175867;
}
double f(double x) {
double r4175868 = 1.0;
double r4175869 = x;
double r4175870 = r4175869 - r4175868;
double r4175871 = r4175868 / r4175870;
double r4175872 = r4175869 + r4175868;
double r4175873 = r4175868 / r4175872;
double r4175874 = 2.0;
double r4175875 = r4175874 / r4175869;
double r4175876 = r4175873 - r4175875;
double r4175877 = r4175871 + r4175876;
double r4175878 = -193524134.39225513;
bool r4175879 = r4175877 <= r4175878;
double r4175880 = 0.0;
bool r4175881 = r4175877 <= r4175880;
double r4175882 = 7.0;
double r4175883 = pow(r4175869, r4175882);
double r4175884 = r4175874 / r4175883;
double r4175885 = r4175869 * r4175869;
double r4175886 = r4175885 * r4175869;
double r4175887 = r4175874 / r4175886;
double r4175888 = r4175884 + r4175887;
double r4175889 = 5.0;
double r4175890 = pow(r4175869, r4175889);
double r4175891 = r4175874 / r4175890;
double r4175892 = r4175888 + r4175891;
double r4175893 = r4175881 ? r4175892 : r4175877;
double r4175894 = r4175879 ? r4175877 : r4175893;
return r4175894;
}




Bits error versus x
Results
| Original | 9.4 |
|---|---|
| Target | 0.3 |
| Herbie | 1.1 |
if (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) < -193524134.39225513 or 0.0 < (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) Initial program 0.6
rmApplied *-un-lft-identity0.6
Applied associate-/r*0.6
Simplified0.6
if -193524134.39225513 < (+ (- (/ 1 (+ x 1)) (/ 2 x)) (/ 1 (- x 1))) < 0.0Initial program 18.4
rmApplied *-un-lft-identity18.4
Applied associate-/r*18.4
Simplified18.4
rmApplied flip-+18.4
Taylor expanded around -inf 1.7
Simplified1.7
Final simplification1.1
herbie shell --seed 2019144 +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))))