\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\frac{1}{2} \cdot \left(2 \cdot \left(\mathsf{fma}\left(x, x, x\right) - \frac{x}{1} \cdot \frac{x}{1}\right) + \log 1\right)double f(double x) {
double r3167594 = 1.0;
double r3167595 = 2.0;
double r3167596 = r3167594 / r3167595;
double r3167597 = x;
double r3167598 = r3167594 + r3167597;
double r3167599 = r3167594 - r3167597;
double r3167600 = r3167598 / r3167599;
double r3167601 = log(r3167600);
double r3167602 = r3167596 * r3167601;
return r3167602;
}
double f(double x) {
double r3167603 = 1.0;
double r3167604 = 2.0;
double r3167605 = r3167603 / r3167604;
double r3167606 = x;
double r3167607 = fma(r3167606, r3167606, r3167606);
double r3167608 = r3167606 / r3167603;
double r3167609 = r3167608 * r3167608;
double r3167610 = r3167607 - r3167609;
double r3167611 = r3167604 * r3167610;
double r3167612 = log(r3167603);
double r3167613 = r3167611 + r3167612;
double r3167614 = r3167605 * r3167613;
return r3167614;
}



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