\frac{1}{x + 1} - \frac{1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -3.585968591078091 \cdot 10^{+108}:\\
\;\;\;\;\frac{\frac{-2}{\sqrt{x \cdot x + -1}}}{\sqrt{x \cdot x + -1}}\\
\mathbf{elif}\;x \le 3.0064938189587386 \cdot 10^{+29}:\\
\;\;\;\;\frac{\frac{-1 - x \cdot x}{x \cdot x + -1}}{-1 - x \cdot x} \cdot -2\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{-2}{\sqrt{x \cdot x + -1}}}{\sqrt{x \cdot x + -1}}\\
\end{array}double f(double x) {
double r4140563 = 1.0;
double r4140564 = x;
double r4140565 = r4140564 + r4140563;
double r4140566 = r4140563 / r4140565;
double r4140567 = r4140564 - r4140563;
double r4140568 = r4140563 / r4140567;
double r4140569 = r4140566 - r4140568;
return r4140569;
}
double f(double x) {
double r4140570 = x;
double r4140571 = -3.585968591078091e+108;
bool r4140572 = r4140570 <= r4140571;
double r4140573 = -2.0;
double r4140574 = r4140570 * r4140570;
double r4140575 = -1.0;
double r4140576 = r4140574 + r4140575;
double r4140577 = sqrt(r4140576);
double r4140578 = r4140573 / r4140577;
double r4140579 = r4140578 / r4140577;
double r4140580 = 3.0064938189587386e+29;
bool r4140581 = r4140570 <= r4140580;
double r4140582 = r4140575 - r4140574;
double r4140583 = r4140582 / r4140576;
double r4140584 = r4140583 / r4140582;
double r4140585 = r4140584 * r4140573;
double r4140586 = r4140581 ? r4140585 : r4140579;
double r4140587 = r4140572 ? r4140579 : r4140586;
return r4140587;
}



Bits error versus x
Results
if x < -3.585968591078091e+108 or 3.0064938189587386e+29 < x Initial program 21.9
rmApplied frac-sub21.9
Simplified0.8
Simplified0.8
rmApplied add-sqr-sqrt0.8
Applied associate-/r*0.8
if -3.585968591078091e+108 < x < 3.0064938189587386e+29Initial program 9.9
rmApplied frac-sub8.9
Simplified0.1
Simplified0.1
rmApplied flip-+2.5
Applied associate-/r/2.6
Simplified2.6
rmApplied div-inv2.6
Applied associate-*l*2.6
Simplified0.1
Final simplification0.4
herbie shell --seed 2019135
(FPCore (x)
:name "Asymptote A"
(- (/ 1 (+ x 1)) (/ 1 (- x 1))))