\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\frac{1}{2} \cdot \mathsf{fma}\left(2, \mathsf{fma}\left(x, x, x\right) - \frac{{x}^{2}}{{1}^{2}}, \log 1\right)double f(double x) {
double r59493 = 1.0;
double r59494 = 2.0;
double r59495 = r59493 / r59494;
double r59496 = x;
double r59497 = r59493 + r59496;
double r59498 = r59493 - r59496;
double r59499 = r59497 / r59498;
double r59500 = log(r59499);
double r59501 = r59495 * r59500;
return r59501;
}
double f(double x) {
double r59502 = 1.0;
double r59503 = 2.0;
double r59504 = r59502 / r59503;
double r59505 = x;
double r59506 = fma(r59505, r59505, r59505);
double r59507 = 2.0;
double r59508 = pow(r59505, r59507);
double r59509 = pow(r59502, r59507);
double r59510 = r59508 / r59509;
double r59511 = r59506 - r59510;
double r59512 = log(r59502);
double r59513 = fma(r59503, r59511, r59512);
double r59514 = r59504 * r59513;
return r59514;
}



Bits error versus x
Initial program 58.5
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019195 +o rules:numerics
(FPCore (x)
:name "Hyperbolic arc-(co)tangent"
(* (/ 1.0 2.0) (log (/ (+ 1.0 x) (- 1.0 x)))))