\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 r94151 = 1.0;
double r94152 = 2.0;
double r94153 = r94151 / r94152;
double r94154 = x;
double r94155 = r94151 + r94154;
double r94156 = r94151 - r94154;
double r94157 = r94155 / r94156;
double r94158 = log(r94157);
double r94159 = r94153 * r94158;
return r94159;
}
double f(double x) {
double r94160 = 1.0;
double r94161 = 2.0;
double r94162 = r94160 / r94161;
double r94163 = x;
double r94164 = fma(r94163, r94163, r94163);
double r94165 = log(r94160);
double r94166 = 2.0;
double r94167 = pow(r94163, r94166);
double r94168 = pow(r94160, r94166);
double r94169 = r94167 / r94168;
double r94170 = r94161 * r94169;
double r94171 = r94165 - r94170;
double r94172 = fma(r94164, r94161, r94171);
double r94173 = r94162 * r94172;
return r94173;
}



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)))))