\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -15340.90493740388956211972981691360473633:\\
\;\;\;\;\frac{-\left(5 \cdot \frac{1}{{x}^{2}} + \left(6 \cdot \frac{1}{x} + 16 \cdot \frac{1}{{x}^{3}}\right)\right)}{\frac{x}{x + 1} + \frac{x + 1}{x - 1}}\\
\mathbf{elif}\;x \le 10654.13586289907289028633385896682739258:\\
\;\;\;\;\frac{\log \left(e^{\frac{x}{x + 1} \cdot \frac{x}{x + 1} - \frac{x + 1}{x - 1} \cdot \frac{x + 1}{x - 1}}\right)}{\frac{x}{x + 1} + \frac{x + 1}{x - 1}}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{{x}^{2}} - \mathsf{fma}\left(3, \frac{1}{x}, 3 \cdot \frac{1}{{x}^{3}}\right)\\
\end{array}double f(double x) {
double r108598 = x;
double r108599 = 1.0;
double r108600 = r108598 + r108599;
double r108601 = r108598 / r108600;
double r108602 = r108598 - r108599;
double r108603 = r108600 / r108602;
double r108604 = r108601 - r108603;
return r108604;
}
double f(double x) {
double r108605 = x;
double r108606 = -15340.90493740389;
bool r108607 = r108605 <= r108606;
double r108608 = 5.0;
double r108609 = 1.0;
double r108610 = 2.0;
double r108611 = pow(r108605, r108610);
double r108612 = r108609 / r108611;
double r108613 = r108608 * r108612;
double r108614 = 6.0;
double r108615 = r108609 / r108605;
double r108616 = r108614 * r108615;
double r108617 = 16.0;
double r108618 = 3.0;
double r108619 = pow(r108605, r108618);
double r108620 = r108609 / r108619;
double r108621 = r108617 * r108620;
double r108622 = r108616 + r108621;
double r108623 = r108613 + r108622;
double r108624 = -r108623;
double r108625 = 1.0;
double r108626 = r108605 + r108625;
double r108627 = r108605 / r108626;
double r108628 = r108605 - r108625;
double r108629 = r108626 / r108628;
double r108630 = r108627 + r108629;
double r108631 = r108624 / r108630;
double r108632 = 10654.135862899073;
bool r108633 = r108605 <= r108632;
double r108634 = r108627 * r108627;
double r108635 = r108629 * r108629;
double r108636 = r108634 - r108635;
double r108637 = exp(r108636);
double r108638 = log(r108637);
double r108639 = r108638 / r108630;
double r108640 = -r108625;
double r108641 = r108640 / r108611;
double r108642 = 3.0;
double r108643 = r108642 * r108620;
double r108644 = fma(r108642, r108615, r108643);
double r108645 = r108641 - r108644;
double r108646 = r108633 ? r108639 : r108645;
double r108647 = r108607 ? r108631 : r108646;
return r108647;
}



Bits error versus x
if x < -15340.90493740389Initial program 59.5
rmApplied flip--59.5
Taylor expanded around inf 0.3
if -15340.90493740389 < x < 10654.135862899073Initial program 0.1
rmApplied flip--0.1
rmApplied add-log-exp0.1
Applied add-log-exp0.1
Applied diff-log0.1
Simplified0.1
if 10654.135862899073 < x Initial program 59.5
Taylor expanded around inf 0.3
Simplified0.3
Final simplification0.2
herbie shell --seed 2019356 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))