\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 r85110 = 1.0;
double r85111 = 2.0;
double r85112 = r85110 / r85111;
double r85113 = x;
double r85114 = r85110 + r85113;
double r85115 = r85110 - r85113;
double r85116 = r85114 / r85115;
double r85117 = log(r85116);
double r85118 = r85112 * r85117;
return r85118;
}
double f(double x) {
double r85119 = 1.0;
double r85120 = 2.0;
double r85121 = r85119 / r85120;
double r85122 = x;
double r85123 = fma(r85122, r85122, r85122);
double r85124 = log(r85119);
double r85125 = 2.0;
double r85126 = pow(r85122, r85125);
double r85127 = pow(r85119, r85125);
double r85128 = r85126 / r85127;
double r85129 = r85120 * r85128;
double r85130 = r85124 - r85129;
double r85131 = fma(r85123, r85120, r85130);
double r85132 = r85121 * r85131;
return r85132;
}



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