\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -7667.5700228269352 \lor \neg \left(x \le 6357.9759220701071\right):\\
\;\;\;\;\left(-\frac{\frac{1}{x}}{x}\right) - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{{x}^{3} + {1}^{3}}, 1 \cdot \left(1 - x\right) + x \cdot x, -\frac{\frac{x + 1}{\sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}} \cdot \frac{\frac{1}{\sqrt[3]{x - 1}}}{\sqrt[3]{1}}\right) + \mathsf{fma}\left(-\frac{\frac{x + 1}{\sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}}, \frac{\frac{1}{\sqrt[3]{x - 1}}}{\sqrt[3]{1}}, \frac{\frac{x + 1}{\sqrt[3]{x - 1}}}{\sqrt[3]{x - 1}} \cdot \frac{\frac{1}{\sqrt[3]{x - 1}}}{\sqrt[3]{1}}\right)\\
\end{array}double f(double x) {
double r195378 = x;
double r195379 = 1.0;
double r195380 = r195378 + r195379;
double r195381 = r195378 / r195380;
double r195382 = r195378 - r195379;
double r195383 = r195380 / r195382;
double r195384 = r195381 - r195383;
return r195384;
}
double f(double x) {
double r195385 = x;
double r195386 = -7667.570022826935;
bool r195387 = r195385 <= r195386;
double r195388 = 6357.975922070107;
bool r195389 = r195385 <= r195388;
double r195390 = !r195389;
bool r195391 = r195387 || r195390;
double r195392 = 1.0;
double r195393 = r195392 / r195385;
double r195394 = r195393 / r195385;
double r195395 = -r195394;
double r195396 = 3.0;
double r195397 = r195396 / r195385;
double r195398 = 3.0;
double r195399 = pow(r195385, r195398);
double r195400 = r195396 / r195399;
double r195401 = r195397 + r195400;
double r195402 = r195395 - r195401;
double r195403 = pow(r195392, r195398);
double r195404 = r195399 + r195403;
double r195405 = r195385 / r195404;
double r195406 = r195392 - r195385;
double r195407 = r195392 * r195406;
double r195408 = r195385 * r195385;
double r195409 = r195407 + r195408;
double r195410 = r195385 + r195392;
double r195411 = r195385 - r195392;
double r195412 = cbrt(r195411);
double r195413 = r195410 / r195412;
double r195414 = r195413 / r195412;
double r195415 = 1.0;
double r195416 = r195415 / r195412;
double r195417 = cbrt(r195415);
double r195418 = r195416 / r195417;
double r195419 = r195414 * r195418;
double r195420 = -r195419;
double r195421 = fma(r195405, r195409, r195420);
double r195422 = -r195414;
double r195423 = fma(r195422, r195418, r195419);
double r195424 = r195421 + r195423;
double r195425 = r195391 ? r195402 : r195424;
return r195425;
}



Bits error versus x
if x < -7667.570022826935 or 6357.975922070107 < x Initial program 59.3
Taylor expanded around inf 0.3
Simplified0.0
if -7667.570022826935 < x < 6357.975922070107Initial program 0.1
rmApplied add-cube-cbrt0.1
Applied associate-/r*0.1
rmApplied *-un-lft-identity0.1
Applied cbrt-prod0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Applied times-frac0.1
Applied flip3-+0.1
Applied associate-/r/0.1
Applied prod-diff0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))