\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -1.0028494934768706:\\
\;\;\;\;\frac{-3}{x} + \left(\frac{-1}{x \cdot x} + \frac{\frac{-3}{x}}{x \cdot x}\right)\\
\mathbf{elif}\;x \le 10076.446968341284:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{x - 1}, 1 + x, \left(1 + x\right) \cdot \frac{1}{x - 1}\right) + \mathsf{fma}\left(\frac{1}{\sqrt{1 + x}}, \frac{x}{\sqrt{1 + x}}, \left(1 + x\right) \cdot \frac{-1}{x - 1}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{-3}{x} + \left(\frac{-1}{x \cdot x} + \frac{\frac{-3}{x}}{x \cdot x}\right)\\
\end{array}double f(double x) {
double r4302157 = x;
double r4302158 = 1.0;
double r4302159 = r4302157 + r4302158;
double r4302160 = r4302157 / r4302159;
double r4302161 = r4302157 - r4302158;
double r4302162 = r4302159 / r4302161;
double r4302163 = r4302160 - r4302162;
return r4302163;
}
double f(double x) {
double r4302164 = x;
double r4302165 = -1.0028494934768706;
bool r4302166 = r4302164 <= r4302165;
double r4302167 = -3.0;
double r4302168 = r4302167 / r4302164;
double r4302169 = -1.0;
double r4302170 = r4302164 * r4302164;
double r4302171 = r4302169 / r4302170;
double r4302172 = r4302168 / r4302170;
double r4302173 = r4302171 + r4302172;
double r4302174 = r4302168 + r4302173;
double r4302175 = 10076.446968341284;
bool r4302176 = r4302164 <= r4302175;
double r4302177 = 1.0;
double r4302178 = r4302164 - r4302177;
double r4302179 = r4302169 / r4302178;
double r4302180 = r4302177 + r4302164;
double r4302181 = r4302177 / r4302178;
double r4302182 = r4302180 * r4302181;
double r4302183 = fma(r4302179, r4302180, r4302182);
double r4302184 = sqrt(r4302180);
double r4302185 = r4302177 / r4302184;
double r4302186 = r4302164 / r4302184;
double r4302187 = r4302180 * r4302179;
double r4302188 = fma(r4302185, r4302186, r4302187);
double r4302189 = r4302183 + r4302188;
double r4302190 = r4302176 ? r4302189 : r4302174;
double r4302191 = r4302166 ? r4302174 : r4302190;
return r4302191;
}



Bits error versus x
if x < -1.0028494934768706 or 10076.446968341284 < x Initial program 58.8
rmApplied log1p-expm1-u58.8
Taylor expanded around inf 0.6
Simplified0.3
if -1.0028494934768706 < x < 10076.446968341284Initial program 0.1
rmApplied div-inv0.1
Applied add-sqr-sqrt0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Applied prod-diff0.1
Final simplification0.2
herbie shell --seed 2019162 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))