\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 r1584831 = 2.0;
double r1584832 = x;
double r1584833 = exp(r1584832);
double r1584834 = -r1584832;
double r1584835 = exp(r1584834);
double r1584836 = r1584833 + r1584835;
double r1584837 = r1584831 / r1584836;
return r1584837;
}
double f(double x) {
double r1584838 = 2.0;
double r1584839 = x;
double r1584840 = exp(r1584839);
double r1584841 = -r1584839;
double r1584842 = exp(r1584841);
double r1584843 = r1584840 + r1584842;
double r1584844 = r1584838 / r1584843;
double r1584845 = log1p(r1584844);
double r1584846 = expm1(r1584845);
return r1584846;
}



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