\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9983730585657322187387308076722547411919:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{1}{x \cdot x} + \frac{3}{x}\right)\\
\mathbf{elif}\;x \le 1.021370211112824000210252961551304906607:\\
\;\;\;\;x \cdot \left(1 \cdot x + 3\right) + 1\\
\mathbf{else}:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{1}{x \cdot x} + \frac{3}{x}\right)\\
\end{array}double f(double x) {
double r3743804 = x;
double r3743805 = 1.0;
double r3743806 = r3743804 + r3743805;
double r3743807 = r3743804 / r3743806;
double r3743808 = r3743804 - r3743805;
double r3743809 = r3743806 / r3743808;
double r3743810 = r3743807 - r3743809;
return r3743810;
}
double f(double x) {
double r3743811 = x;
double r3743812 = -0.9983730585657322;
bool r3743813 = r3743811 <= r3743812;
double r3743814 = 3.0;
double r3743815 = -r3743814;
double r3743816 = r3743811 * r3743811;
double r3743817 = r3743816 * r3743811;
double r3743818 = r3743815 / r3743817;
double r3743819 = 1.0;
double r3743820 = r3743819 / r3743816;
double r3743821 = r3743814 / r3743811;
double r3743822 = r3743820 + r3743821;
double r3743823 = r3743818 - r3743822;
double r3743824 = 1.021370211112824;
bool r3743825 = r3743811 <= r3743824;
double r3743826 = r3743819 * r3743811;
double r3743827 = r3743826 + r3743814;
double r3743828 = r3743811 * r3743827;
double r3743829 = r3743828 + r3743819;
double r3743830 = r3743825 ? r3743829 : r3743823;
double r3743831 = r3743813 ? r3743823 : r3743830;
return r3743831;
}



Bits error versus x
Results
if x < -0.9983730585657322 or 1.021370211112824 < x Initial program 58.6
Taylor expanded around inf 0.7
Simplified0.4
if -0.9983730585657322 < x < 1.021370211112824Initial program 0.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019172
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))