\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\frac{1}{2} \cdot \mathsf{fma}\left(\mathsf{fma}\left(x, x, x\right), 2, \log 1 - 2 \cdot \frac{{x}^{2}}{{1}^{2}}\right)double f(double x) {
double r98494 = 1.0;
double r98495 = 2.0;
double r98496 = r98494 / r98495;
double r98497 = x;
double r98498 = r98494 + r98497;
double r98499 = r98494 - r98497;
double r98500 = r98498 / r98499;
double r98501 = log(r98500);
double r98502 = r98496 * r98501;
return r98502;
}
double f(double x) {
double r98503 = 1.0;
double r98504 = 2.0;
double r98505 = r98503 / r98504;
double r98506 = x;
double r98507 = fma(r98506, r98506, r98506);
double r98508 = log(r98503);
double r98509 = 2.0;
double r98510 = pow(r98506, r98509);
double r98511 = pow(r98503, r98509);
double r98512 = r98510 / r98511;
double r98513 = r98504 * r98512;
double r98514 = r98508 - r98513;
double r98515 = fma(r98507, r98504, r98514);
double r98516 = r98505 * r98515;
return r98516;
}



Bits error versus x
Initial program 58.4
Taylor expanded around 0 0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2020027 +o rules:numerics
(FPCore (x)
:name "Hyperbolic arc-(co)tangent"
:precision binary64
(* (/ 1 2) (log (/ (+ 1 x) (- 1 x)))))