\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 r89415 = 1.0;
double r89416 = 2.0;
double r89417 = r89415 / r89416;
double r89418 = x;
double r89419 = r89415 + r89418;
double r89420 = r89415 - r89418;
double r89421 = r89419 / r89420;
double r89422 = log(r89421);
double r89423 = r89417 * r89422;
return r89423;
}
double f(double x) {
double r89424 = 1.0;
double r89425 = 2.0;
double r89426 = r89424 / r89425;
double r89427 = x;
double r89428 = fma(r89427, r89427, r89427);
double r89429 = log(r89424);
double r89430 = 2.0;
double r89431 = pow(r89427, r89430);
double r89432 = pow(r89424, r89430);
double r89433 = r89431 / r89432;
double r89434 = r89425 * r89433;
double r89435 = r89429 - r89434;
double r89436 = fma(r89428, r89425, r89435);
double r89437 = r89426 * r89436;
return r89437;
}



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