\frac{2}{e^{x} + e^{-x}}\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{2}{e^{x} + e^{-x}}\right)\right)double f(double x) {
double r4850706 = 2.0;
double r4850707 = x;
double r4850708 = exp(r4850707);
double r4850709 = -r4850707;
double r4850710 = exp(r4850709);
double r4850711 = r4850708 + r4850710;
double r4850712 = r4850706 / r4850711;
return r4850712;
}
double f(double x) {
double r4850713 = 2.0;
double r4850714 = x;
double r4850715 = exp(r4850714);
double r4850716 = -r4850714;
double r4850717 = exp(r4850716);
double r4850718 = r4850715 + r4850717;
double r4850719 = r4850713 / r4850718;
double r4850720 = log1p(r4850719);
double r4850721 = expm1(r4850720);
return r4850721;
}



Bits error versus x
Results
Initial program 0.0
rmApplied expm1-log1p-u0.0
Final simplification0.0
herbie shell --seed 2019173 +o rules:numerics
(FPCore (x)
:name "Hyperbolic secant"
(/ 2.0 (+ (exp x) (exp (- x)))))