\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \leq -11903.191960040664 \lor \neg \left(x \leq 15314.37957646558\right):\\
\;\;\;\;\frac{-\left(\frac{1}{x} + 3\right)}{x} - \frac{3}{{x}^{3}}\\
\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{x}{x + 1} - \frac{x + 1}{x - 1}} \cdot \sqrt[3]{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\right) \cdot \sqrt[3]{\log \left(e^{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\right)}\\
\end{array}(FPCore (x) :precision binary64 (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))
(FPCore (x)
:precision binary64
(if (or (<= x -11903.191960040664) (not (<= x 15314.37957646558)))
(- (/ (- (+ (/ 1.0 x) 3.0)) x) (/ 3.0 (pow x 3.0)))
(*
(*
(cbrt (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))
(cbrt (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0)))))
(cbrt (log (exp (- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0)))))))))double code(double x) {
return ((double) ((x / ((double) (x + 1.0))) - (((double) (x + 1.0)) / ((double) (x - 1.0)))));
}
double code(double x) {
double tmp;
if (((x <= -11903.191960040664) || !(x <= 15314.37957646558))) {
tmp = ((double) ((((double) -(((double) ((1.0 / x) + 3.0)))) / x) - (3.0 / ((double) pow(x, 3.0)))));
} else {
tmp = ((double) (((double) (((double) cbrt(((double) ((x / ((double) (x + 1.0))) - (((double) (x + 1.0)) / ((double) (x - 1.0))))))) * ((double) cbrt(((double) ((x / ((double) (x + 1.0))) - (((double) (x + 1.0)) / ((double) (x - 1.0))))))))) * ((double) cbrt(((double) log(((double) exp(((double) ((x / ((double) (x + 1.0))) - (((double) (x + 1.0)) / ((double) (x - 1.0)))))))))))));
}
return tmp;
}



Bits error versus x
Results
if x < -11903.1919600406636 or 15314.37957646558 < x Initial program 59.1
Taylor expanded around inf 0.3
Simplified0.3
rmApplied associate-*l/_binary640.0
Simplified0.0
if -11903.1919600406636 < x < 15314.37957646558Initial program 0.1
rmApplied add-cube-cbrt_binary640.1
rmApplied add-log-exp_binary640.1
Applied add-log-exp_binary640.1
Applied diff-log_binary640.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020205
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))