\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 r61719 = 1.0;
double r61720 = 2.0;
double r61721 = r61719 / r61720;
double r61722 = x;
double r61723 = r61719 + r61722;
double r61724 = r61719 - r61722;
double r61725 = r61723 / r61724;
double r61726 = log(r61725);
double r61727 = r61721 * r61726;
return r61727;
}
double f(double x) {
double r61728 = 1.0;
double r61729 = 2.0;
double r61730 = r61728 / r61729;
double r61731 = x;
double r61732 = fma(r61731, r61731, r61731);
double r61733 = log(r61728);
double r61734 = 2.0;
double r61735 = pow(r61731, r61734);
double r61736 = pow(r61728, r61734);
double r61737 = r61735 / r61736;
double r61738 = r61729 * r61737;
double r61739 = r61733 - r61738;
double r61740 = fma(r61732, r61729, r61739);
double r61741 = r61730 * r61740;
return r61741;
}



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