\frac{x}{x + 1} - \frac{x + 1}{x - 1}-\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\mathsf{fma}\left(3, x, 1\right)}{x + 1}\right)\right)}{x - 1}double f(double x) {
double r100401 = x;
double r100402 = 1.0;
double r100403 = r100401 + r100402;
double r100404 = r100401 / r100403;
double r100405 = r100401 - r100402;
double r100406 = r100403 / r100405;
double r100407 = r100404 - r100406;
return r100407;
}
double f(double x) {
double r100408 = 3.0;
double r100409 = x;
double r100410 = 1.0;
double r100411 = fma(r100408, r100409, r100410);
double r100412 = r100409 + r100410;
double r100413 = r100411 / r100412;
double r100414 = log1p(r100413);
double r100415 = expm1(r100414);
double r100416 = r100409 - r100410;
double r100417 = r100415 / r100416;
double r100418 = -r100417;
return r100418;
}



Bits error versus x
Initial program 29.9
rmApplied frac-sub31.0
Simplified31.0
Taylor expanded around 0 15.1
rmApplied distribute-frac-neg15.1
Simplified0.2
rmApplied expm1-log1p-u0.2
Final simplification0.2
herbie shell --seed 2020060 +o rules:numerics
(FPCore (x)
:name "Asymptote C"
:precision binary64
(- (/ x (+ x 1)) (/ (+ x 1) (- x 1))))