\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.606370674840263745863921940326690673828 \cdot 10^{-11}:\\
\;\;\;\;\frac{-1}{x} \cdot \frac{1}{x} + \left(\frac{-3}{x} - \frac{3}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(\frac{x}{x + 1}\right)}^{3} - {\left(x + 1\right)}^{3} \cdot {\left(\frac{1}{x - 1}\right)}^{3}}{\frac{x \cdot x}{\left(x + 1\right) \cdot \left(x + 1\right)} + \frac{x + \left(x + 1\right) \cdot \frac{x + 1}{x - 1}}{x - 1}}\\
\end{array}double f(double x) {
double r76801 = x;
double r76802 = 1.0;
double r76803 = r76801 + r76802;
double r76804 = r76801 / r76803;
double r76805 = r76801 - r76802;
double r76806 = r76803 / r76805;
double r76807 = r76804 - r76806;
return r76807;
}
double f(double x) {
double r76808 = x;
double r76809 = 1.0;
double r76810 = r76808 + r76809;
double r76811 = r76808 / r76810;
double r76812 = r76808 - r76809;
double r76813 = r76810 / r76812;
double r76814 = r76811 - r76813;
double r76815 = 2.6063706748402637e-11;
bool r76816 = r76814 <= r76815;
double r76817 = -1.0;
double r76818 = r76817 / r76808;
double r76819 = r76809 / r76808;
double r76820 = r76818 * r76819;
double r76821 = 3.0;
double r76822 = -r76821;
double r76823 = r76822 / r76808;
double r76824 = 3.0;
double r76825 = pow(r76808, r76824);
double r76826 = r76821 / r76825;
double r76827 = r76823 - r76826;
double r76828 = r76820 + r76827;
double r76829 = pow(r76811, r76824);
double r76830 = pow(r76810, r76824);
double r76831 = 1.0;
double r76832 = r76831 / r76812;
double r76833 = pow(r76832, r76824);
double r76834 = r76830 * r76833;
double r76835 = r76829 - r76834;
double r76836 = r76808 * r76808;
double r76837 = r76810 * r76810;
double r76838 = r76836 / r76837;
double r76839 = r76810 * r76813;
double r76840 = r76808 + r76839;
double r76841 = r76840 / r76812;
double r76842 = r76838 + r76841;
double r76843 = r76835 / r76842;
double r76844 = r76816 ? r76828 : r76843;
return r76844;
}



Bits error versus x
Results
if (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 2.6063706748402637e-11Initial program 59.3
Taylor expanded around inf 0.5
Simplified0.5
rmApplied distribute-lft-in0.5
Applied associate--l+0.5
Simplified0.2
if 2.6063706748402637e-11 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) Initial program 0.3
rmApplied flip3--0.3
Simplified0.3
rmApplied div-inv0.3
Applied unpow-prod-down0.3
Final simplification0.3
herbie shell --seed 2019326
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))