\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -27596.369944095844:\\
\;\;\;\;\frac{\frac{-48}{\left(x \cdot x\right) \cdot x} - \left(\frac{9}{x} + \frac{12}{x \cdot x}\right)}{\left(\frac{1 + x}{x - 1} \cdot \frac{x}{1 + x} + \frac{1 + x}{x - 1} \cdot \frac{1 + x}{x - 1}\right) + \frac{x}{1 + x} \cdot \frac{x}{1 + x}}\\
\mathbf{elif}\;x \le 12988.445966310597:\\
\;\;\;\;\frac{\frac{{x}^{3} \cdot {\left(x - 1\right)}^{3} - {\left(1 + x\right)}^{3} \cdot {\left(1 + x\right)}^{3}}{{\left(x - 1\right)}^{3} \cdot {\left(1 + x\right)}^{3}}}{\left(\frac{1 + x}{x - 1} \cdot \frac{x}{1 + x} + \frac{1 + x}{x - 1} \cdot \frac{1 + x}{x - 1}\right) + \frac{x}{1 + x} \cdot \frac{x}{1 + x}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{x \cdot x} + \left(\frac{\frac{-1}{x}}{x \cdot x} + \frac{-1}{x}\right) \cdot 3\\
\end{array}double f(double x) {
double r55448400 = x;
double r55448401 = 1.0;
double r55448402 = r55448400 + r55448401;
double r55448403 = r55448400 / r55448402;
double r55448404 = r55448400 - r55448401;
double r55448405 = r55448402 / r55448404;
double r55448406 = r55448403 - r55448405;
return r55448406;
}
double f(double x) {
double r55448407 = x;
double r55448408 = -27596.369944095844;
bool r55448409 = r55448407 <= r55448408;
double r55448410 = -48.0;
double r55448411 = r55448407 * r55448407;
double r55448412 = r55448411 * r55448407;
double r55448413 = r55448410 / r55448412;
double r55448414 = 9.0;
double r55448415 = r55448414 / r55448407;
double r55448416 = 12.0;
double r55448417 = r55448416 / r55448411;
double r55448418 = r55448415 + r55448417;
double r55448419 = r55448413 - r55448418;
double r55448420 = 1.0;
double r55448421 = r55448420 + r55448407;
double r55448422 = r55448407 - r55448420;
double r55448423 = r55448421 / r55448422;
double r55448424 = r55448407 / r55448421;
double r55448425 = r55448423 * r55448424;
double r55448426 = r55448423 * r55448423;
double r55448427 = r55448425 + r55448426;
double r55448428 = r55448424 * r55448424;
double r55448429 = r55448427 + r55448428;
double r55448430 = r55448419 / r55448429;
double r55448431 = 12988.445966310597;
bool r55448432 = r55448407 <= r55448431;
double r55448433 = 3.0;
double r55448434 = pow(r55448407, r55448433);
double r55448435 = pow(r55448422, r55448433);
double r55448436 = r55448434 * r55448435;
double r55448437 = pow(r55448421, r55448433);
double r55448438 = r55448437 * r55448437;
double r55448439 = r55448436 - r55448438;
double r55448440 = r55448435 * r55448437;
double r55448441 = r55448439 / r55448440;
double r55448442 = r55448441 / r55448429;
double r55448443 = -1.0;
double r55448444 = r55448443 / r55448411;
double r55448445 = r55448443 / r55448407;
double r55448446 = r55448445 / r55448411;
double r55448447 = r55448446 + r55448445;
double r55448448 = r55448447 * r55448433;
double r55448449 = r55448444 + r55448448;
double r55448450 = r55448432 ? r55448442 : r55448449;
double r55448451 = r55448409 ? r55448430 : r55448450;
return r55448451;
}



Bits error versus x
Results
if x < -27596.369944095844Initial program 59.3
rmApplied flip3--59.3
rmApplied add-log-exp59.3
Taylor expanded around inf 0.4
Simplified0.3
if -27596.369944095844 < x < 12988.445966310597Initial program 0.1
rmApplied flip3--0.1
rmApplied cube-div0.1
Applied cube-div0.1
Applied frac-sub0.1
if 12988.445966310597 < x Initial program 59.2
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.2
herbie shell --seed 2019120
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))