\frac{x}{x + 1} - \frac{x + 1}{x - 1}
\begin{array}{l}
t_0 := \frac{x}{x + 1}\\
t_1 := \frac{x + 1}{x - 1}\\
\mathbf{if}\;t_0 - t_1 \leq 0.0005411699590934793:\\
\;\;\;\;\frac{-3}{x} - \left(\frac{1}{{x}^{4}} + \mathsf{fma}\left(3, {x}^{-3}, \sqrt{{x}^{-4}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{t_0}\right) - t_1\\
\end{array}
(FPCore (x) :precision binary64 (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))
(FPCore (x)
:precision binary64
(let* ((t_0 (/ x (+ x 1.0))) (t_1 (/ (+ x 1.0) (- x 1.0))))
(if (<= (- t_0 t_1) 0.0005411699590934793)
(-
(/ -3.0 x)
(+ (/ 1.0 (pow x 4.0)) (fma 3.0 (pow x -3.0) (sqrt (pow x -4.0)))))
(- (log (exp t_0)) t_1))))double code(double x) {
return (x / (x + 1.0)) - ((x + 1.0) / (x - 1.0));
}
double code(double x) {
double t_0 = x / (x + 1.0);
double t_1 = (x + 1.0) / (x - 1.0);
double tmp;
if ((t_0 - t_1) <= 0.0005411699590934793) {
tmp = (-3.0 / x) - ((1.0 / pow(x, 4.0)) + fma(3.0, pow(x, -3.0), sqrt(pow(x, -4.0))));
} else {
tmp = log(exp(t_0)) - t_1;
}
return tmp;
}



Bits error versus x
if (-.f64 (/.f64 x (+.f64 x 1)) (/.f64 (+.f64 x 1) (-.f64 x 1))) < 5.41169959093479e-4Initial program 58.8
Taylor expanded around inf 0.6
Simplified0.3
rmApplied associate--l-_binary640.3
Simplified0.3
rmApplied add-sqr-sqrt_binary640.3
Applied sqrt-unprod_binary640.3
Simplified0.3
if 5.41169959093479e-4 < (-.f64 (/.f64 x (+.f64 x 1)) (/.f64 (+.f64 x 1) (-.f64 x 1))) Initial program 0.0
rmApplied add-log-exp_binary640.0
Simplified0.0
Final simplification0.2
herbie shell --seed 2021211
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))