\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -13946.27375560417021915782243013381958008 \lor \neg \left(x \le 10454.06679094586434075608849525451660156\right):\\
\;\;\;\;\left(-\frac{3}{{x}^{3}}\right) - \left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \frac{1}{x + 1}, -\frac{x + 1}{x - 1}\right)\\
\end{array}double f(double x) {
double r66070 = x;
double r66071 = 1.0;
double r66072 = r66070 + r66071;
double r66073 = r66070 / r66072;
double r66074 = r66070 - r66071;
double r66075 = r66072 / r66074;
double r66076 = r66073 - r66075;
return r66076;
}
double f(double x) {
double r66077 = x;
double r66078 = -13946.27375560417;
bool r66079 = r66077 <= r66078;
double r66080 = 10454.066790945864;
bool r66081 = r66077 <= r66080;
double r66082 = !r66081;
bool r66083 = r66079 || r66082;
double r66084 = 3.0;
double r66085 = 3.0;
double r66086 = pow(r66077, r66085);
double r66087 = r66084 / r66086;
double r66088 = -r66087;
double r66089 = r66084 / r66077;
double r66090 = 1.0;
double r66091 = r66090 / r66077;
double r66092 = r66091 / r66077;
double r66093 = r66089 + r66092;
double r66094 = r66088 - r66093;
double r66095 = 1.0;
double r66096 = r66077 + r66090;
double r66097 = r66095 / r66096;
double r66098 = r66077 - r66090;
double r66099 = r66096 / r66098;
double r66100 = -r66099;
double r66101 = fma(r66077, r66097, r66100);
double r66102 = r66083 ? r66094 : r66101;
return r66102;
}



Bits error versus x
if x < -13946.27375560417 or 10454.066790945864 < x Initial program 59.4
Simplified59.4
Taylor expanded around inf 0.3
Simplified0.0
if -13946.27375560417 < x < 10454.066790945864Initial program 0.1
Simplified0.1
rmApplied div-inv0.1
Applied fma-neg0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019195 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))