\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -18305.620511464476:\\
\;\;\;\;\left(\frac{-3}{\left(x \cdot x\right) \cdot x} + \frac{-3}{x}\right) + \frac{-1}{x \cdot x}\\
\mathbf{elif}\;x \le 13913.189376161075:\\
\;\;\;\;\frac{x}{1 + x} - \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1 + x}{x - 1}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{-3}{\left(x \cdot x\right) \cdot x} + \frac{-3}{x}\right) + \frac{-1}{x \cdot x}\\
\end{array}double f(double x) {
double r4603753 = x;
double r4603754 = 1.0;
double r4603755 = r4603753 + r4603754;
double r4603756 = r4603753 / r4603755;
double r4603757 = r4603753 - r4603754;
double r4603758 = r4603755 / r4603757;
double r4603759 = r4603756 - r4603758;
return r4603759;
}
double f(double x) {
double r4603760 = x;
double r4603761 = -18305.620511464476;
bool r4603762 = r4603760 <= r4603761;
double r4603763 = -3.0;
double r4603764 = r4603760 * r4603760;
double r4603765 = r4603764 * r4603760;
double r4603766 = r4603763 / r4603765;
double r4603767 = r4603763 / r4603760;
double r4603768 = r4603766 + r4603767;
double r4603769 = -1.0;
double r4603770 = r4603769 / r4603764;
double r4603771 = r4603768 + r4603770;
double r4603772 = 13913.189376161075;
bool r4603773 = r4603760 <= r4603772;
double r4603774 = 1.0;
double r4603775 = r4603774 + r4603760;
double r4603776 = r4603760 / r4603775;
double r4603777 = r4603760 - r4603774;
double r4603778 = r4603775 / r4603777;
double r4603779 = expm1(r4603778);
double r4603780 = log1p(r4603779);
double r4603781 = r4603776 - r4603780;
double r4603782 = r4603773 ? r4603781 : r4603771;
double r4603783 = r4603762 ? r4603771 : r4603782;
return r4603783;
}



Bits error versus x
Results
if x < -18305.620511464476 or 13913.189376161075 < x Initial program 59.4
rmApplied log1p-expm1-u59.4
Taylor expanded around -inf 0.3
Simplified0.0
if -18305.620511464476 < x < 13913.189376161075Initial program 0.1
rmApplied log1p-expm1-u0.1
Final simplification0.1
herbie shell --seed 2019142 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))