\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -11166.74680765492303180508315563201904297 \lor \neg \left(x \le 17625.54287631354236509650945663452148438\right):\\
\;\;\;\;\left(\frac{-1}{x} + \frac{1}{x}\right) \cdot \left(3 + \frac{1}{x}\right) + \mathsf{fma}\left(-\sqrt[3]{\frac{3}{{x}^{3}}} \cdot \sqrt[3]{\frac{3}{{x}^{3}}}, \sqrt[3]{\frac{3}{{x}^{3}}}, -\frac{3 + \frac{1}{x}}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{1 \cdot 1 - x \cdot x}, 1 - x, -\frac{x + 1}{x - 1}\right)\\
\end{array}double f(double x) {
double r154594 = x;
double r154595 = 1.0;
double r154596 = r154594 + r154595;
double r154597 = r154594 / r154596;
double r154598 = r154594 - r154595;
double r154599 = r154596 / r154598;
double r154600 = r154597 - r154599;
return r154600;
}
double f(double x) {
double r154601 = x;
double r154602 = -11166.746807654923;
bool r154603 = r154601 <= r154602;
double r154604 = 17625.542876313542;
bool r154605 = r154601 <= r154604;
double r154606 = !r154605;
bool r154607 = r154603 || r154606;
double r154608 = -1.0;
double r154609 = r154608 / r154601;
double r154610 = 1.0;
double r154611 = r154610 / r154601;
double r154612 = r154609 + r154611;
double r154613 = 3.0;
double r154614 = 1.0;
double r154615 = r154614 / r154601;
double r154616 = r154613 + r154615;
double r154617 = r154612 * r154616;
double r154618 = 3.0;
double r154619 = pow(r154601, r154618);
double r154620 = r154613 / r154619;
double r154621 = cbrt(r154620);
double r154622 = r154621 * r154621;
double r154623 = -r154622;
double r154624 = r154616 / r154601;
double r154625 = -r154624;
double r154626 = fma(r154623, r154621, r154625);
double r154627 = r154617 + r154626;
double r154628 = r154614 * r154614;
double r154629 = r154601 * r154601;
double r154630 = r154628 - r154629;
double r154631 = r154601 / r154630;
double r154632 = r154614 - r154601;
double r154633 = r154601 + r154614;
double r154634 = r154601 - r154614;
double r154635 = r154633 / r154634;
double r154636 = -r154635;
double r154637 = fma(r154631, r154632, r154636);
double r154638 = r154607 ? r154627 : r154637;
return r154638;
}



Bits error versus x
if x < -11166.746807654923 or 17625.542876313542 < x Initial program 59.4
Simplified59.4
Taylor expanded around inf 0.3
Simplified0.0
rmApplied div-inv0.0
Applied div-inv0.3
Applied distribute-rgt-out0.3
Applied add-cube-cbrt0.3
Applied distribute-lft-neg-in0.3
Applied prod-diff0.3
Simplified0.2
Simplified0.0
if -11166.746807654923 < x < 17625.542876313542Initial program 0.1
Simplified0.1
rmApplied flip-+0.1
Applied associate-/r/0.1
Applied fma-neg0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019194 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))