\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9906799218317323685312203451758250594139:\\
\;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{1}{x \cdot x} + \frac{3}{x}\right)\\
\mathbf{elif}\;x \le 9433.186745037075525033287703990936279297:\\
\;\;\;\;\frac{x + 1}{x - 1} \cdot 0 + \mathsf{fma}\left(x, \frac{1}{x + 1}, -\mathsf{log1p}\left(\mathsf{expm1}\left(\sqrt{x + 1} \cdot \left(\frac{1}{x - 1} \cdot \sqrt{x + 1}\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-\frac{3}{\left(x \cdot x\right) \cdot x}\right) - \left(\frac{1}{x \cdot x} + \frac{3}{x}\right)\\
\end{array}double f(double x) {
double r5449201 = x;
double r5449202 = 1.0;
double r5449203 = r5449201 + r5449202;
double r5449204 = r5449201 / r5449203;
double r5449205 = r5449201 - r5449202;
double r5449206 = r5449203 / r5449205;
double r5449207 = r5449204 - r5449206;
return r5449207;
}
double f(double x) {
double r5449208 = x;
double r5449209 = -0.9906799218317324;
bool r5449210 = r5449208 <= r5449209;
double r5449211 = 3.0;
double r5449212 = r5449208 * r5449208;
double r5449213 = r5449212 * r5449208;
double r5449214 = r5449211 / r5449213;
double r5449215 = -r5449214;
double r5449216 = 1.0;
double r5449217 = r5449216 / r5449212;
double r5449218 = r5449211 / r5449208;
double r5449219 = r5449217 + r5449218;
double r5449220 = r5449215 - r5449219;
double r5449221 = 9433.186745037076;
bool r5449222 = r5449208 <= r5449221;
double r5449223 = r5449208 + r5449216;
double r5449224 = r5449208 - r5449216;
double r5449225 = r5449223 / r5449224;
double r5449226 = 0.0;
double r5449227 = r5449225 * r5449226;
double r5449228 = 1.0;
double r5449229 = r5449228 / r5449223;
double r5449230 = sqrt(r5449223);
double r5449231 = r5449228 / r5449224;
double r5449232 = r5449231 * r5449230;
double r5449233 = r5449230 * r5449232;
double r5449234 = expm1(r5449233);
double r5449235 = log1p(r5449234);
double r5449236 = -r5449235;
double r5449237 = fma(r5449208, r5449229, r5449236);
double r5449238 = r5449227 + r5449237;
double r5449239 = r5449222 ? r5449238 : r5449220;
double r5449240 = r5449210 ? r5449220 : r5449239;
return r5449240;
}



Bits error versus x
if x < -0.9906799218317324 or 9433.186745037076 < x Initial program 58.9
Taylor expanded around inf 0.5
Simplified0.2
if -0.9906799218317324 < x < 9433.186745037076Initial program 0.1
rmApplied div-inv0.1
Applied div-inv0.1
Applied prod-diff0.1
Simplified0.1
rmApplied log1p-expm1-u0.1
rmApplied add-sqr-sqrt0.1
Applied associate-*r*0.1
Final simplification0.2
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1.0)) (/ (+ x 1.0) (- x 1.0))))