\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 r111888 = 1.0;
double r111889 = 2.0;
double r111890 = r111888 / r111889;
double r111891 = x;
double r111892 = r111888 + r111891;
double r111893 = r111888 - r111891;
double r111894 = r111892 / r111893;
double r111895 = log(r111894);
double r111896 = r111890 * r111895;
return r111896;
}
double f(double x) {
double r111897 = 1.0;
double r111898 = 2.0;
double r111899 = r111897 / r111898;
double r111900 = x;
double r111901 = fma(r111900, r111900, r111900);
double r111902 = log(r111897);
double r111903 = 2.0;
double r111904 = pow(r111900, r111903);
double r111905 = pow(r111897, r111903);
double r111906 = r111904 / r111905;
double r111907 = r111898 * r111906;
double r111908 = r111902 - r111907;
double r111909 = fma(r111901, r111898, r111908);
double r111910 = r111899 * r111909;
return r111910;
}



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