\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9983730585657322187387308076722547411919:\\
\;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\\
\mathbf{elif}\;x \le 1.021370211112824000210252961551304906607:\\
\;\;\;\;\left(\left(x \cdot x\right) \cdot 1 + 1\right) + 3 \cdot x\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{3}{x} + \frac{\frac{1}{x}}{x}\right)\\
\end{array}double f(double x) {
double r5866256 = x;
double r5866257 = 1.0;
double r5866258 = r5866256 + r5866257;
double r5866259 = r5866256 / r5866258;
double r5866260 = r5866256 - r5866257;
double r5866261 = r5866258 / r5866260;
double r5866262 = r5866259 - r5866261;
return r5866262;
}
double f(double x) {
double r5866263 = x;
double r5866264 = -0.9983730585657322;
bool r5866265 = r5866263 <= r5866264;
double r5866266 = 3.0;
double r5866267 = r5866263 * r5866263;
double r5866268 = r5866267 * r5866263;
double r5866269 = r5866266 / r5866268;
double r5866270 = -r5866269;
double r5866271 = r5866266 / r5866263;
double r5866272 = 1.0;
double r5866273 = r5866272 / r5866263;
double r5866274 = r5866273 / r5866263;
double r5866275 = r5866271 + r5866274;
double r5866276 = r5866270 - r5866275;
double r5866277 = 1.021370211112824;
bool r5866278 = r5866263 <= r5866277;
double r5866279 = r5866267 * r5866272;
double r5866280 = r5866279 + r5866272;
double r5866281 = r5866266 * r5866263;
double r5866282 = r5866280 + r5866281;
double r5866283 = r5866278 ? r5866282 : r5866276;
double r5866284 = r5866265 ? r5866276 : r5866283;
return r5866284;
}



Bits error versus x
Results
if x < -0.9983730585657322 or 1.021370211112824 < x Initial program 58.6
Taylor expanded around inf 0.7
Simplified0.4
if -0.9983730585657322 < x < 1.021370211112824Initial program 0.0
Taylor expanded around 0 0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019172
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))