\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -13119.88725188772696128580719232559204102 \lor \neg \left(x \le 12089.1663070021731982706114649772644043\right):\\
\;\;\;\;-\left(\frac{1}{x \cdot x} + \left(\frac{3}{x} + \frac{3}{{x}^{3}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + 1} - \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1 + x}{x - 1}\right)\right)\\
\end{array}double f(double x) {
double r103187 = x;
double r103188 = 1.0;
double r103189 = r103187 + r103188;
double r103190 = r103187 / r103189;
double r103191 = r103187 - r103188;
double r103192 = r103189 / r103191;
double r103193 = r103190 - r103192;
return r103193;
}
double f(double x) {
double r103194 = x;
double r103195 = -13119.887251887727;
bool r103196 = r103194 <= r103195;
double r103197 = 12089.166307002173;
bool r103198 = r103194 <= r103197;
double r103199 = !r103198;
bool r103200 = r103196 || r103199;
double r103201 = 1.0;
double r103202 = r103194 * r103194;
double r103203 = r103201 / r103202;
double r103204 = 3.0;
double r103205 = r103204 / r103194;
double r103206 = 3.0;
double r103207 = pow(r103194, r103206);
double r103208 = r103204 / r103207;
double r103209 = r103205 + r103208;
double r103210 = r103203 + r103209;
double r103211 = -r103210;
double r103212 = r103194 + r103201;
double r103213 = r103194 / r103212;
double r103214 = r103201 + r103194;
double r103215 = r103194 - r103201;
double r103216 = r103214 / r103215;
double r103217 = expm1(r103216);
double r103218 = log1p(r103217);
double r103219 = r103213 - r103218;
double r103220 = r103200 ? r103211 : r103219;
return r103220;
}



Bits error versus x
Results
if x < -13119.887251887727 or 12089.166307002173 < x Initial program 59.2
Simplified59.2
rmApplied log1p-expm1-u59.2
Taylor expanded around inf 0.3
Simplified0.0
if -13119.887251887727 < x < 12089.166307002173Initial program 0.1
Simplified0.1
rmApplied log1p-expm1-u0.1
Final simplification0.1
herbie shell --seed 2019209 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))