\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 r60514 = 1.0;
double r60515 = 2.0;
double r60516 = r60514 / r60515;
double r60517 = x;
double r60518 = r60514 + r60517;
double r60519 = r60514 - r60517;
double r60520 = r60518 / r60519;
double r60521 = log(r60520);
double r60522 = r60516 * r60521;
return r60522;
}
double f(double x) {
double r60523 = 1.0;
double r60524 = 2.0;
double r60525 = r60523 / r60524;
double r60526 = x;
double r60527 = fma(r60526, r60526, r60526);
double r60528 = log(r60523);
double r60529 = 2.0;
double r60530 = pow(r60526, r60529);
double r60531 = pow(r60523, r60529);
double r60532 = r60530 / r60531;
double r60533 = r60524 * r60532;
double r60534 = r60528 - r60533;
double r60535 = fma(r60527, r60524, r60534);
double r60536 = r60525 * r60535;
return r60536;
}



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