\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{x}{1 + x} - \frac{1 + x}{x - 1} \le 2.034384882776407721394207328557968139648 \cdot 10^{-10}:\\
\;\;\;\;\frac{-3}{{x}^{3}} - \left(\frac{1}{x \cdot x} + \frac{3}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\frac{x}{1 + x} - \frac{1 + x}{x - 1}}\right)\\
\end{array}double f(double x) {
double r82974 = x;
double r82975 = 1.0;
double r82976 = r82974 + r82975;
double r82977 = r82974 / r82976;
double r82978 = r82974 - r82975;
double r82979 = r82976 / r82978;
double r82980 = r82977 - r82979;
return r82980;
}
double f(double x) {
double r82981 = x;
double r82982 = 1.0;
double r82983 = r82982 + r82981;
double r82984 = r82981 / r82983;
double r82985 = r82981 - r82982;
double r82986 = r82983 / r82985;
double r82987 = r82984 - r82986;
double r82988 = 2.0343848827764077e-10;
bool r82989 = r82987 <= r82988;
double r82990 = 3.0;
double r82991 = -r82990;
double r82992 = 3.0;
double r82993 = pow(r82981, r82992);
double r82994 = r82991 / r82993;
double r82995 = r82981 * r82981;
double r82996 = r82982 / r82995;
double r82997 = r82990 / r82981;
double r82998 = r82996 + r82997;
double r82999 = r82994 - r82998;
double r83000 = exp(r82987);
double r83001 = log(r83000);
double r83002 = r82989 ? r82999 : r83001;
return r83002;
}



Bits error versus x
Results
if (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 2.0343848827764077e-10Initial program 59.2
Taylor expanded around inf 0.6
Simplified0.3
if 2.0343848827764077e-10 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) Initial program 0.3
rmApplied add-log-exp0.3
Applied add-log-exp0.3
Applied diff-log0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))