\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -1.327620599565707992795182690315414220095 \lor \neg \left(x \le 1.014919163926425227373329107649624347687\right):\\
\;\;\;\;\left(\frac{-1}{{x}^{2}} - \frac{3}{x}\right) - \frac{3}{{x}^{3}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + 1} - \left(-\left(2 \cdot \left({x}^{2} + x\right) + 1\right)\right)\\
\end{array}double f(double x) {
double r164699 = x;
double r164700 = 1.0;
double r164701 = r164699 + r164700;
double r164702 = r164699 / r164701;
double r164703 = r164699 - r164700;
double r164704 = r164701 / r164703;
double r164705 = r164702 - r164704;
return r164705;
}
double f(double x) {
double r164706 = x;
double r164707 = -1.327620599565708;
bool r164708 = r164706 <= r164707;
double r164709 = 1.0149191639264252;
bool r164710 = r164706 <= r164709;
double r164711 = !r164710;
bool r164712 = r164708 || r164711;
double r164713 = 1.0;
double r164714 = -r164713;
double r164715 = 2.0;
double r164716 = pow(r164706, r164715);
double r164717 = r164714 / r164716;
double r164718 = 3.0;
double r164719 = r164718 / r164706;
double r164720 = r164717 - r164719;
double r164721 = 3.0;
double r164722 = pow(r164706, r164721);
double r164723 = r164718 / r164722;
double r164724 = r164720 - r164723;
double r164725 = r164706 + r164713;
double r164726 = r164706 / r164725;
double r164727 = 2.0;
double r164728 = r164716 + r164706;
double r164729 = r164727 * r164728;
double r164730 = r164729 + r164713;
double r164731 = -r164730;
double r164732 = r164726 - r164731;
double r164733 = r164712 ? r164724 : r164732;
return r164733;
}



Bits error versus x
Results
if x < -1.327620599565708 or 1.0149191639264252 < x Initial program 58.4
Taylor expanded around inf 0.7
Simplified0.4
if -1.327620599565708 < x < 1.0149191639264252Initial program 0.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019322
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))