\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 r64166 = 2.0;
double r64167 = x;
double r64168 = exp(r64167);
double r64169 = -r64167;
double r64170 = exp(r64169);
double r64171 = r64168 + r64170;
double r64172 = r64166 / r64171;
return r64172;
}
double f(double x) {
double r64173 = 2.0;
double r64174 = x;
double r64175 = exp(r64174);
double r64176 = -r64174;
double r64177 = exp(r64176);
double r64178 = r64175 + r64177;
double r64179 = r64173 / r64178;
double r64180 = log1p(r64179);
double r64181 = expm1(r64180);
return r64181;
}



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