\frac{x}{x + 1} - \frac{x + 1}{x - 1}\begin{array}{l}
\mathbf{if}\;x \le -11098.444471894443 \lor \neg \left(x \le 0.998861424289309352\right):\\
\;\;\;\;\frac{-1}{{x}^{2}} - \mathsf{fma}\left(3, \frac{1}{{x}^{3}}, \frac{3}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\mathsf{fma}\left(\frac{x}{x \cdot x - 1 \cdot 1}, x - 1, -\left(x + 1\right) \cdot \frac{x + 1}{x \cdot x - 1 \cdot 1}\right) + \frac{x + 1}{x \cdot x - 1 \cdot 1} \cdot \left(\left(-\left(x + 1\right)\right) + \left(x + 1\right)\right)} \cdot \sqrt{\frac{x}{x + 1} - \frac{x + 1}{x - 1}}\\
\end{array}double f(double x) {
double r149346 = x;
double r149347 = 1.0;
double r149348 = r149346 + r149347;
double r149349 = r149346 / r149348;
double r149350 = r149346 - r149347;
double r149351 = r149348 / r149350;
double r149352 = r149349 - r149351;
return r149352;
}
double f(double x) {
double r149353 = x;
double r149354 = -11098.444471894443;
bool r149355 = r149353 <= r149354;
double r149356 = 0.9988614242893094;
bool r149357 = r149353 <= r149356;
double r149358 = !r149357;
bool r149359 = r149355 || r149358;
double r149360 = 1.0;
double r149361 = -r149360;
double r149362 = 2.0;
double r149363 = pow(r149353, r149362);
double r149364 = r149361 / r149363;
double r149365 = 3.0;
double r149366 = 1.0;
double r149367 = 3.0;
double r149368 = pow(r149353, r149367);
double r149369 = r149366 / r149368;
double r149370 = r149365 / r149353;
double r149371 = fma(r149365, r149369, r149370);
double r149372 = r149364 - r149371;
double r149373 = r149353 * r149353;
double r149374 = r149360 * r149360;
double r149375 = r149373 - r149374;
double r149376 = r149353 / r149375;
double r149377 = r149353 - r149360;
double r149378 = r149353 + r149360;
double r149379 = r149378 / r149375;
double r149380 = r149378 * r149379;
double r149381 = -r149380;
double r149382 = fma(r149376, r149377, r149381);
double r149383 = -r149378;
double r149384 = r149383 + r149378;
double r149385 = r149379 * r149384;
double r149386 = r149382 + r149385;
double r149387 = sqrt(r149386);
double r149388 = r149353 / r149378;
double r149389 = r149378 / r149377;
double r149390 = r149388 - r149389;
double r149391 = sqrt(r149390);
double r149392 = r149387 * r149391;
double r149393 = r149359 ? r149372 : r149392;
return r149393;
}



Bits error versus x
if x < -11098.444471894443 or 0.9988614242893094 < x Initial program 58.9
Taylor expanded around inf 0.6
Simplified0.6
Taylor expanded around 0 0.6
Simplified0.3
if -11098.444471894443 < x < 0.9988614242893094Initial program 0.1
rmApplied add-sqr-sqrt0.1
rmApplied flip--0.1
Applied associate-/r/0.1
Applied flip-+0.1
Applied associate-/r/0.1
Applied prod-diff0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2020033 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))