\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 2.0571526871 \cdot 10^{-7}:\\
\;\;\;\;\left(-\frac{\frac{1}{x}}{x}\right) - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{{\left(\frac{x}{x + 1} - \frac{x + 1}{x - 1}\right)}^{3}}\\
\end{array}double f(double x) {
double r166896 = x;
double r166897 = 1.0;
double r166898 = r166896 + r166897;
double r166899 = r166896 / r166898;
double r166900 = r166896 - r166897;
double r166901 = r166898 / r166900;
double r166902 = r166899 - r166901;
return r166902;
}
double f(double x) {
double r166903 = x;
double r166904 = 1.0;
double r166905 = r166903 + r166904;
double r166906 = r166903 / r166905;
double r166907 = r166903 - r166904;
double r166908 = r166905 / r166907;
double r166909 = r166906 - r166908;
double r166910 = 2.057152687084951e-07;
bool r166911 = r166909 <= r166910;
double r166912 = r166904 / r166903;
double r166913 = r166912 / r166903;
double r166914 = -r166913;
double r166915 = 3.0;
double r166916 = r166915 / r166903;
double r166917 = 3.0;
double r166918 = pow(r166903, r166917);
double r166919 = r166915 / r166918;
double r166920 = r166916 + r166919;
double r166921 = r166914 - r166920;
double r166922 = pow(r166909, r166917);
double r166923 = cbrt(r166922);
double r166924 = r166911 ? r166921 : r166923;
return r166924;
}



Bits error versus x
Results
if (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 2.057152687084951e-07Initial program 59.1
Taylor expanded around inf 0.6
Simplified0.3
if 2.057152687084951e-07 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) Initial program 0.1
rmApplied add-cbrt-cube0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))