\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\frac{1}{2} \cdot \mathsf{fma}\left(-\frac{{x}^{2}}{{1}^{2}}, 2, \mathsf{fma}\left(2, \mathsf{fma}\left(x, x, x\right), \log 1\right)\right)double f(double x) {
double r85123 = 1.0;
double r85124 = 2.0;
double r85125 = r85123 / r85124;
double r85126 = x;
double r85127 = r85123 + r85126;
double r85128 = r85123 - r85126;
double r85129 = r85127 / r85128;
double r85130 = log(r85129);
double r85131 = r85125 * r85130;
return r85131;
}
double f(double x) {
double r85132 = 1.0;
double r85133 = 2.0;
double r85134 = r85132 / r85133;
double r85135 = x;
double r85136 = 2.0;
double r85137 = pow(r85135, r85136);
double r85138 = pow(r85132, r85136);
double r85139 = r85137 / r85138;
double r85140 = -r85139;
double r85141 = fma(r85135, r85135, r85135);
double r85142 = log(r85132);
double r85143 = fma(r85133, r85141, r85142);
double r85144 = fma(r85140, r85133, r85143);
double r85145 = r85134 * r85144;
return r85145;
}



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