\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 r94105 = 1.0;
double r94106 = 2.0;
double r94107 = r94105 / r94106;
double r94108 = x;
double r94109 = r94105 + r94108;
double r94110 = r94105 - r94108;
double r94111 = r94109 / r94110;
double r94112 = log(r94111);
double r94113 = r94107 * r94112;
return r94113;
}
double f(double x) {
double r94114 = 1.0;
double r94115 = 2.0;
double r94116 = r94114 / r94115;
double r94117 = x;
double r94118 = 2.0;
double r94119 = pow(r94117, r94118);
double r94120 = pow(r94114, r94118);
double r94121 = r94119 / r94120;
double r94122 = -r94121;
double r94123 = fma(r94117, r94117, r94117);
double r94124 = log(r94114);
double r94125 = fma(r94115, r94123, r94124);
double r94126 = fma(r94122, r94115, r94125);
double r94127 = r94116 * r94126;
return r94127;
}



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