\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le \frac{-1709098657258643}{137438953472} \lor \neg \left(x \le \frac{6362872999706447}{549755813888}\right):\\
\;\;\;\;\frac{-1}{{x}^{2}} - 3 \cdot \left(\frac{1}{x} + \frac{1}{{x}^{3}}\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(e^{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\right)\\
\end{array}double f(double x) {
double r80206 = x;
double r80207 = 1.0;
double r80208 = r80206 + r80207;
double r80209 = r80206 / r80208;
double r80210 = r80206 - r80207;
double r80211 = r80208 / r80210;
double r80212 = r80209 - r80211;
return r80212;
}
double f(double x) {
double r80213 = x;
double r80214 = -1709098657258643.0;
double r80215 = 137438953472.0;
double r80216 = r80214 / r80215;
bool r80217 = r80213 <= r80216;
double r80218 = 6362872999706447.0;
double r80219 = 549755813888.0;
double r80220 = r80218 / r80219;
bool r80221 = r80213 <= r80220;
double r80222 = !r80221;
bool r80223 = r80217 || r80222;
double r80224 = 1.0;
double r80225 = -r80224;
double r80226 = 2.0;
double r80227 = pow(r80213, r80226);
double r80228 = r80225 / r80227;
double r80229 = 3.0;
double r80230 = 1.0;
double r80231 = r80230 / r80213;
double r80232 = 3.0;
double r80233 = pow(r80213, r80232);
double r80234 = r80230 / r80233;
double r80235 = r80231 + r80234;
double r80236 = r80229 * r80235;
double r80237 = r80228 - r80236;
double r80238 = r80213 + r80224;
double r80239 = r80213 / r80238;
double r80240 = r80213 - r80224;
double r80241 = r80238 / r80240;
double r80242 = r80239 - r80241;
double r80243 = exp(r80242);
double r80244 = log(r80243);
double r80245 = r80223 ? r80237 : r80244;
return r80245;
}



Bits error versus x
Results
if x < -12435.329388671693 or 11573.998562574065 < x Initial program 59.3
Taylor expanded around inf 0.3
Simplified0.3
if -12435.329388671693 < x < 11573.998562574065Initial program 0.1
rmApplied add-log-exp0.1
Applied add-log-exp0.1
Applied diff-log0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019304
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))