\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -10978.06154230227366497274488210678100586:\\
\;\;\;\;-\left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \frac{3}{\left(x \cdot x\right) \cdot x}\right)\right)\\
\mathbf{elif}\;x \le 11708.85496823561516066547483205795288086:\\
\;\;\;\;\mathsf{fma}\left(x, \frac{1}{x + 1}, \frac{-\left(x + 1\right)}{x - 1}\right)\\
\mathbf{else}:\\
\;\;\;\;-\left(\frac{3}{x} + \left(\frac{1}{x \cdot x} + \frac{3}{\left(x \cdot x\right) \cdot x}\right)\right)\\
\end{array}double f(double x) {
double r4766483 = x;
double r4766484 = 1.0;
double r4766485 = r4766483 + r4766484;
double r4766486 = r4766483 / r4766485;
double r4766487 = r4766483 - r4766484;
double r4766488 = r4766485 / r4766487;
double r4766489 = r4766486 - r4766488;
return r4766489;
}
double f(double x) {
double r4766490 = x;
double r4766491 = -10978.061542302274;
bool r4766492 = r4766490 <= r4766491;
double r4766493 = 3.0;
double r4766494 = r4766493 / r4766490;
double r4766495 = 1.0;
double r4766496 = r4766490 * r4766490;
double r4766497 = r4766495 / r4766496;
double r4766498 = r4766496 * r4766490;
double r4766499 = r4766493 / r4766498;
double r4766500 = r4766497 + r4766499;
double r4766501 = r4766494 + r4766500;
double r4766502 = -r4766501;
double r4766503 = 11708.854968235615;
bool r4766504 = r4766490 <= r4766503;
double r4766505 = 1.0;
double r4766506 = r4766490 + r4766495;
double r4766507 = r4766505 / r4766506;
double r4766508 = -r4766506;
double r4766509 = r4766490 - r4766495;
double r4766510 = r4766508 / r4766509;
double r4766511 = fma(r4766490, r4766507, r4766510);
double r4766512 = r4766504 ? r4766511 : r4766502;
double r4766513 = r4766492 ? r4766502 : r4766512;
return r4766513;
}



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