\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;\frac{x}{x + 1} - \frac{x + 1}{x - 1} \le 7.9939934938 \cdot 10^{-7}:\\
\;\;\;\;\left(-\frac{\frac{1}{x}}{x}\right) - \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{x}{x + 1} - \frac{x + 1}{x - 1}} \cdot \sqrt{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\\
\end{array}double f(double x) {
double r125355 = x;
double r125356 = 1.0;
double r125357 = r125355 + r125356;
double r125358 = r125355 / r125357;
double r125359 = r125355 - r125356;
double r125360 = r125357 / r125359;
double r125361 = r125358 - r125360;
return r125361;
}
double f(double x) {
double r125362 = x;
double r125363 = 1.0;
double r125364 = r125362 + r125363;
double r125365 = r125362 / r125364;
double r125366 = r125362 - r125363;
double r125367 = r125364 / r125366;
double r125368 = r125365 - r125367;
double r125369 = 7.993993493826679e-07;
bool r125370 = r125368 <= r125369;
double r125371 = r125363 / r125362;
double r125372 = r125371 / r125362;
double r125373 = -r125372;
double r125374 = 3.0;
double r125375 = r125374 / r125362;
double r125376 = 3.0;
double r125377 = pow(r125362, r125376);
double r125378 = r125374 / r125377;
double r125379 = r125375 + r125378;
double r125380 = r125373 - r125379;
double r125381 = sqrt(r125368);
double r125382 = r125381 * r125381;
double r125383 = r125370 ? r125380 : r125382;
return r125383;
}



Bits error versus x
Results
if (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) < 7.993993493826679e-07Initial program 59.0
Taylor expanded around inf 0.5
Simplified0.2
if 7.993993493826679e-07 < (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))) Initial program 0.1
rmApplied add-sqr-sqrt0.1
Final simplification0.2
herbie shell --seed 2020043 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))