\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -6041717527243.163:\\
\;\;\;\;\frac{\frac{-3}{x}}{x \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\
\mathbf{elif}\;x \le 180005.41283506868:\\
\;\;\;\;\frac{-3 \cdot x + -1}{\left(x - 1\right) \cdot \left(x + 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-3}{x}}{x \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\
\end{array}double f(double x) {
double r2165165 = x;
double r2165166 = 1.0;
double r2165167 = r2165165 + r2165166;
double r2165168 = r2165165 / r2165167;
double r2165169 = r2165165 - r2165166;
double r2165170 = r2165167 / r2165169;
double r2165171 = r2165168 - r2165170;
return r2165171;
}
double f(double x) {
double r2165172 = x;
double r2165173 = -6041717527243.163;
bool r2165174 = r2165172 <= r2165173;
double r2165175 = -3.0;
double r2165176 = r2165175 / r2165172;
double r2165177 = r2165172 * r2165172;
double r2165178 = r2165176 / r2165177;
double r2165179 = 3.0;
double r2165180 = r2165179 / r2165172;
double r2165181 = 1.0;
double r2165182 = r2165181 / r2165177;
double r2165183 = r2165180 + r2165182;
double r2165184 = r2165178 - r2165183;
double r2165185 = 180005.41283506868;
bool r2165186 = r2165172 <= r2165185;
double r2165187 = r2165175 * r2165172;
double r2165188 = -1.0;
double r2165189 = r2165187 + r2165188;
double r2165190 = r2165172 - r2165181;
double r2165191 = r2165172 + r2165181;
double r2165192 = r2165190 * r2165191;
double r2165193 = r2165189 / r2165192;
double r2165194 = r2165186 ? r2165193 : r2165184;
double r2165195 = r2165174 ? r2165184 : r2165194;
return r2165195;
}



Bits error versus x
Results
if x < -6041717527243.163 or 180005.41283506868 < x Initial program 59.9
rmApplied add-cube-cbrt60.8
Applied associate-/l*60.8
rmApplied add-cube-cbrt60.9
Applied associate-*l*60.9
Taylor expanded around inf 0.3
Simplified0.0
if -6041717527243.163 < x < 180005.41283506868Initial program 0.5
rmApplied frac-sub0.5
Taylor expanded around -inf 0.0
Final simplification0.0
herbie shell --seed 2019151
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))