\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -3.823156336026761 \cdot 10^{+17}:\\
\;\;\;\;\left(\frac{-1}{x \cdot x} - \frac{3}{x}\right) - \frac{\frac{3}{x}}{x \cdot x}\\
\mathbf{elif}\;x \le 3512926.0072915074:\\
\;\;\;\;\frac{-3 \cdot x + -1}{\left(x - 1\right) \cdot \left(1 + x\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{-1}{x \cdot x} - \frac{3}{x}\right) - \frac{\frac{3}{x}}{x \cdot x}\\
\end{array}double f(double x) {
double r5255183 = x;
double r5255184 = 1.0;
double r5255185 = r5255183 + r5255184;
double r5255186 = r5255183 / r5255185;
double r5255187 = r5255183 - r5255184;
double r5255188 = r5255185 / r5255187;
double r5255189 = r5255186 - r5255188;
return r5255189;
}
double f(double x) {
double r5255190 = x;
double r5255191 = -3.823156336026761e+17;
bool r5255192 = r5255190 <= r5255191;
double r5255193 = -1.0;
double r5255194 = r5255190 * r5255190;
double r5255195 = r5255193 / r5255194;
double r5255196 = 3.0;
double r5255197 = r5255196 / r5255190;
double r5255198 = r5255195 - r5255197;
double r5255199 = r5255197 / r5255194;
double r5255200 = r5255198 - r5255199;
double r5255201 = 3512926.0072915074;
bool r5255202 = r5255190 <= r5255201;
double r5255203 = -3.0;
double r5255204 = r5255203 * r5255190;
double r5255205 = r5255204 + r5255193;
double r5255206 = 1.0;
double r5255207 = r5255190 - r5255206;
double r5255208 = r5255206 + r5255190;
double r5255209 = r5255207 * r5255208;
double r5255210 = r5255205 / r5255209;
double r5255211 = r5255202 ? r5255210 : r5255200;
double r5255212 = r5255192 ? r5255200 : r5255211;
return r5255212;
}



Bits error versus x
Results
if x < -3.823156336026761e+17 or 3512926.0072915074 < x Initial program 60.1
Taylor expanded around inf 0.3
Simplified0.0
if -3.823156336026761e+17 < x < 3512926.0072915074Initial program 0.9
rmApplied frac-sub0.9
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2019158
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))