\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -0.9906799218317323685312203451758250594139:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\
\mathbf{elif}\;x \le 9776.984335638540869695134460926055908203:\\
\;\;\;\;\mathsf{fma}\left(x, \frac{1}{x + 1}, -\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{\sqrt{x + 1}}{x - 1} \cdot \sqrt{x + 1}\right)\right)\right) + \frac{x + 1}{x - 1} \cdot 0\\
\mathbf{else}:\\
\;\;\;\;\frac{-3}{\left(x \cdot x\right) \cdot x} - \left(\frac{3}{x} + \frac{1}{x \cdot x}\right)\\
\end{array}double f(double x) {
double r6350053 = x;
double r6350054 = 1.0;
double r6350055 = r6350053 + r6350054;
double r6350056 = r6350053 / r6350055;
double r6350057 = r6350053 - r6350054;
double r6350058 = r6350055 / r6350057;
double r6350059 = r6350056 - r6350058;
return r6350059;
}
double f(double x) {
double r6350060 = x;
double r6350061 = -0.9906799218317324;
bool r6350062 = r6350060 <= r6350061;
double r6350063 = 3.0;
double r6350064 = -r6350063;
double r6350065 = r6350060 * r6350060;
double r6350066 = r6350065 * r6350060;
double r6350067 = r6350064 / r6350066;
double r6350068 = r6350063 / r6350060;
double r6350069 = 1.0;
double r6350070 = r6350069 / r6350065;
double r6350071 = r6350068 + r6350070;
double r6350072 = r6350067 - r6350071;
double r6350073 = 9776.98433563854;
bool r6350074 = r6350060 <= r6350073;
double r6350075 = 1.0;
double r6350076 = r6350060 + r6350069;
double r6350077 = r6350075 / r6350076;
double r6350078 = sqrt(r6350076);
double r6350079 = r6350060 - r6350069;
double r6350080 = r6350078 / r6350079;
double r6350081 = r6350080 * r6350078;
double r6350082 = expm1(r6350081);
double r6350083 = log1p(r6350082);
double r6350084 = -r6350083;
double r6350085 = fma(r6350060, r6350077, r6350084);
double r6350086 = r6350076 / r6350079;
double r6350087 = 0.0;
double r6350088 = r6350086 * r6350087;
double r6350089 = r6350085 + r6350088;
double r6350090 = r6350074 ? r6350089 : r6350072;
double r6350091 = r6350062 ? r6350072 : r6350090;
return r6350091;
}



Bits error versus x
if x < -0.9906799218317324 or 9776.98433563854 < x Initial program 58.9
Taylor expanded around inf 0.5
Simplified0.2
if -0.9906799218317324 < x < 9776.98433563854Initial 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
Simplified0.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))))