\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9983730585657322187387308076722547411919:\\
\;\;\;\;-\left(\left(\frac{3}{x \cdot \left(x \cdot x\right)} + \frac{1}{x \cdot x}\right) + \frac{3}{x}\right)\\
\mathbf{elif}\;x \le 1.021370211112824000210252961551304906607:\\
\;\;\;\;\mathsf{fma}\left(3, x, \mathsf{fma}\left(x \cdot x, 1, 1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-\left(\left(\frac{3}{x \cdot \left(x \cdot x\right)} + \frac{1}{x \cdot x}\right) + \frac{3}{x}\right)\\
\end{array}double f(double x) {
double r5258393 = x;
double r5258394 = 1.0;
double r5258395 = r5258393 + r5258394;
double r5258396 = r5258393 / r5258395;
double r5258397 = r5258393 - r5258394;
double r5258398 = r5258395 / r5258397;
double r5258399 = r5258396 - r5258398;
return r5258399;
}
double f(double x) {
double r5258400 = x;
double r5258401 = -0.9983730585657322;
bool r5258402 = r5258400 <= r5258401;
double r5258403 = 3.0;
double r5258404 = r5258400 * r5258400;
double r5258405 = r5258400 * r5258404;
double r5258406 = r5258403 / r5258405;
double r5258407 = 1.0;
double r5258408 = r5258407 / r5258404;
double r5258409 = r5258406 + r5258408;
double r5258410 = r5258403 / r5258400;
double r5258411 = r5258409 + r5258410;
double r5258412 = -r5258411;
double r5258413 = 1.021370211112824;
bool r5258414 = r5258400 <= r5258413;
double r5258415 = fma(r5258404, r5258407, r5258407);
double r5258416 = fma(r5258403, r5258400, r5258415);
double r5258417 = r5258414 ? r5258416 : r5258412;
double r5258418 = r5258402 ? r5258412 : r5258417;
return r5258418;
}



Bits error versus x
if x < -0.9983730585657322 or 1.021370211112824 < x Initial program 58.6
rmApplied add-cbrt-cube58.6
Taylor expanded around inf 0.7
Simplified0.4
if -0.9983730585657322 < x < 1.021370211112824Initial program 0.0
rmApplied add-cbrt-cube0.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))