\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9983730585657322187387308076722547411919:\\
\;\;\;\;-\left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \frac{3}{\left(x \cdot x\right) \cdot x}\right)\right)\\
\mathbf{elif}\;x \le 1.021370211112824000210252961551304906607:\\
\;\;\;\;\mathsf{fma}\left(3, x, \mathsf{fma}\left(x \cdot x, 1, 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-\left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \frac{3}{\left(x \cdot x\right) \cdot x}\right)\right)\\
\end{array}double f(double x) {
double r4546788 = x;
double r4546789 = 1.0;
double r4546790 = r4546788 + r4546789;
double r4546791 = r4546788 / r4546790;
double r4546792 = r4546788 - r4546789;
double r4546793 = r4546790 / r4546792;
double r4546794 = r4546791 - r4546793;
return r4546794;
}
double f(double x) {
double r4546795 = x;
double r4546796 = -0.9983730585657322;
bool r4546797 = r4546795 <= r4546796;
double r4546798 = 3.0;
double r4546799 = r4546798 / r4546795;
double r4546800 = 1.0;
double r4546801 = r4546795 * r4546795;
double r4546802 = r4546800 / r4546801;
double r4546803 = r4546801 * r4546795;
double r4546804 = r4546798 / r4546803;
double r4546805 = r4546802 + r4546804;
double r4546806 = r4546799 + r4546805;
double r4546807 = -r4546806;
double r4546808 = 1.021370211112824;
bool r4546809 = r4546795 <= r4546808;
double r4546810 = fma(r4546801, r4546800, r4546800);
double r4546811 = fma(r4546798, r4546795, r4546810);
double r4546812 = r4546809 ? r4546811 : r4546807;
double r4546813 = r4546797 ? r4546807 : r4546812;
return r4546813;
}



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