\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 3.906903492056912341467977967113256454468 \cdot 10^{-5}:\\
\;\;\;\;-\left(\frac{3}{x} + \left(\frac{3}{{x}^{3}} + \frac{1}{x \cdot x}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(x, x, 1 \cdot \left(x + 1\right)\right), -\frac{x + 1}{{x}^{3} - {1}^{3}}, \frac{\frac{x}{\sqrt[3]{x + 1}}}{\sqrt[3]{1 + x} \cdot \sqrt[3]{1 + x}}\right) + \frac{x + 1}{{x}^{3} - {1}^{3}} \cdot \left(\left(-\mathsf{fma}\left(x, x, 1 \cdot \left(x + 1\right)\right)\right) + \mathsf{fma}\left(x, x, 1 \cdot \left(x + 1\right)\right)\right)\\
\end{array}double f(double x) {
double r118723 = x;
double r118724 = 1.0;
double r118725 = r118723 + r118724;
double r118726 = r118723 / r118725;
double r118727 = r118723 - r118724;
double r118728 = r118725 / r118727;
double r118729 = r118726 - r118728;
return r118729;
}
double f(double x) {
double r118730 = x;
double r118731 = 1.0;
double r118732 = r118730 + r118731;
double r118733 = r118730 / r118732;
double r118734 = r118730 - r118731;
double r118735 = r118732 / r118734;
double r118736 = r118733 - r118735;
double r118737 = 3.9069034920569123e-05;
bool r118738 = r118736 <= r118737;
double r118739 = 3.0;
double r118740 = r118739 / r118730;
double r118741 = 3.0;
double r118742 = pow(r118730, r118741);
double r118743 = r118739 / r118742;
double r118744 = r118730 * r118730;
double r118745 = r118731 / r118744;
double r118746 = r118743 + r118745;
double r118747 = r118740 + r118746;
double r118748 = -r118747;
double r118749 = r118731 * r118732;
double r118750 = fma(r118730, r118730, r118749);
double r118751 = pow(r118731, r118741);
double r118752 = r118742 - r118751;
double r118753 = r118732 / r118752;
double r118754 = -r118753;
double r118755 = cbrt(r118732);
double r118756 = r118730 / r118755;
double r118757 = r118731 + r118730;
double r118758 = cbrt(r118757);
double r118759 = r118758 * r118758;
double r118760 = r118756 / r118759;
double r118761 = fma(r118750, r118754, r118760);
double r118762 = -r118750;
double r118763 = r118762 + r118750;
double r118764 = r118753 * r118763;
double r118765 = r118761 + r118764;
double r118766 = r118738 ? r118748 : r118765;
return r118766;
}



Bits error versus x
if (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 3.9069034920569123e-05Initial program 59.1
rmApplied add-sqr-sqrt60.1
Taylor expanded around inf 0.5
Simplified0.2
if 3.9069034920569123e-05 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) Initial program 0.1
rmApplied flip3--0.1
Applied associate-/r/0.1
Applied add-cube-cbrt0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Applied prod-diff0.1
Simplified0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019350 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))