\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 r76907 = 1.0;
double r76908 = 2.0;
double r76909 = r76907 / r76908;
double r76910 = x;
double r76911 = r76907 + r76910;
double r76912 = r76907 - r76910;
double r76913 = r76911 / r76912;
double r76914 = log(r76913);
double r76915 = r76909 * r76914;
return r76915;
}
double f(double x) {
double r76916 = 1.0;
double r76917 = 2.0;
double r76918 = r76916 / r76917;
double r76919 = x;
double r76920 = fma(r76919, r76919, r76919);
double r76921 = log(r76916);
double r76922 = 2.0;
double r76923 = pow(r76919, r76922);
double r76924 = pow(r76916, r76922);
double r76925 = r76923 / r76924;
double r76926 = r76917 * r76925;
double r76927 = r76921 - r76926;
double r76928 = fma(r76920, r76917, r76927);
double r76929 = r76918 * r76928;
return r76929;
}



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