\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}:\\
\;\;\;\;\left(-\left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\right) - \frac{3}{{x}^{3}}\\
\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 r104898 = x;
double r104899 = 1.0;
double r104900 = r104898 + r104899;
double r104901 = r104898 / r104900;
double r104902 = r104898 - r104899;
double r104903 = r104900 / r104902;
double r104904 = r104901 - r104903;
return r104904;
}
double f(double x) {
double r104905 = x;
double r104906 = 1.0;
double r104907 = r104905 + r104906;
double r104908 = r104905 / r104907;
double r104909 = r104905 - r104906;
double r104910 = r104907 / r104909;
double r104911 = r104908 - r104910;
double r104912 = 2.6063706748402637e-11;
bool r104913 = r104911 <= r104912;
double r104914 = 3.0;
double r104915 = r104914 / r104905;
double r104916 = r104906 / r104905;
double r104917 = r104916 / r104905;
double r104918 = r104915 + r104917;
double r104919 = -r104918;
double r104920 = 3.0;
double r104921 = pow(r104905, r104920);
double r104922 = r104914 / r104921;
double r104923 = r104919 - r104922;
double r104924 = pow(r104908, r104920);
double r104925 = pow(r104907, r104920);
double r104926 = 1.0;
double r104927 = r104926 / r104909;
double r104928 = pow(r104927, r104920);
double r104929 = r104925 * r104928;
double r104930 = r104924 - r104929;
double r104931 = r104905 * r104905;
double r104932 = r104907 * r104907;
double r104933 = r104931 / r104932;
double r104934 = r104907 * r104910;
double r104935 = r104905 + r104934;
double r104936 = r104935 / r104909;
double r104937 = r104933 + r104936;
double r104938 = r104930 / r104937;
double r104939 = r104913 ? r104923 : r104938;
return r104939;
}



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
Simplified0.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))))