\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -13596.2266202856026 \lor \neg \left(x \le 14233.51059306751\right):\\
\;\;\;\;-\left(1 \cdot \frac{1}{{x}^{2}} + \left(3 \cdot \frac{1}{x} + 3 \cdot \frac{1}{{x}^{3}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \frac{1}{x + 1}, -\frac{x + 1}{x - 1}\right)\\
\end{array}double f(double x) {
double r118294 = x;
double r118295 = 1.0;
double r118296 = r118294 + r118295;
double r118297 = r118294 / r118296;
double r118298 = r118294 - r118295;
double r118299 = r118296 / r118298;
double r118300 = r118297 - r118299;
return r118300;
}
double f(double x) {
double r118301 = x;
double r118302 = -13596.226620285603;
bool r118303 = r118301 <= r118302;
double r118304 = 14233.510593067505;
bool r118305 = r118301 <= r118304;
double r118306 = !r118305;
bool r118307 = r118303 || r118306;
double r118308 = 1.0;
double r118309 = 1.0;
double r118310 = 2.0;
double r118311 = pow(r118301, r118310);
double r118312 = r118309 / r118311;
double r118313 = r118308 * r118312;
double r118314 = 3.0;
double r118315 = r118309 / r118301;
double r118316 = r118314 * r118315;
double r118317 = 3.0;
double r118318 = pow(r118301, r118317);
double r118319 = r118309 / r118318;
double r118320 = r118314 * r118319;
double r118321 = r118316 + r118320;
double r118322 = r118313 + r118321;
double r118323 = -r118322;
double r118324 = r118301 + r118308;
double r118325 = r118309 / r118324;
double r118326 = r118301 - r118308;
double r118327 = r118324 / r118326;
double r118328 = -r118327;
double r118329 = fma(r118301, r118325, r118328);
double r118330 = r118307 ? r118323 : r118329;
return r118330;
}



Bits error versus x
if x < -13596.226620285603 or 14233.510593067505 < x Initial program 59.2
rmApplied add-cbrt-cube60.4
Applied add-cbrt-cube62.0
Applied cbrt-undiv62.0
Simplified59.2
Taylor expanded around inf 0.3
if -13596.226620285603 < x < 14233.510593067505Initial program 0.1
rmApplied div-inv0.1
Applied fma-neg0.1
Final simplification0.2
herbie shell --seed 2020083 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))