\left(e^{x} - 2\right) + e^{-x}\begin{array}{l}
\mathbf{if}\;x \le -0.0385554081306844556586987948776368284598:\\
\;\;\;\;\frac{\left({\left(e^{x}\right)}^{2} + 4\right) - \mathsf{fma}\left(4, e^{x}, {\left(e^{x}\right)}^{-2}\right)}{\left(e^{x} - 2\right) - e^{-x}}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, x, \mathsf{fma}\left(\frac{1}{360}, {x}^{6}, \frac{1}{12} \cdot {x}^{4}\right)\right)\\
\end{array}double f(double x) {
double r81027 = x;
double r81028 = exp(r81027);
double r81029 = 2.0;
double r81030 = r81028 - r81029;
double r81031 = -r81027;
double r81032 = exp(r81031);
double r81033 = r81030 + r81032;
return r81033;
}
double f(double x) {
double r81034 = x;
double r81035 = -0.038555408130684456;
bool r81036 = r81034 <= r81035;
double r81037 = exp(r81034);
double r81038 = 2.0;
double r81039 = pow(r81037, r81038);
double r81040 = 4.0;
double r81041 = r81039 + r81040;
double r81042 = -2.0;
double r81043 = pow(r81037, r81042);
double r81044 = fma(r81040, r81037, r81043);
double r81045 = r81041 - r81044;
double r81046 = 2.0;
double r81047 = r81037 - r81046;
double r81048 = -r81034;
double r81049 = exp(r81048);
double r81050 = r81047 - r81049;
double r81051 = r81045 / r81050;
double r81052 = 0.002777777777777778;
double r81053 = 6.0;
double r81054 = pow(r81034, r81053);
double r81055 = 0.08333333333333333;
double r81056 = 4.0;
double r81057 = pow(r81034, r81056);
double r81058 = r81055 * r81057;
double r81059 = fma(r81052, r81054, r81058);
double r81060 = fma(r81034, r81034, r81059);
double r81061 = r81036 ? r81051 : r81060;
return r81061;
}




Bits error versus x
| Original | 29.9 |
|---|---|
| Target | 0.0 |
| Herbie | 0.3 |
if x < -0.038555408130684456Initial program 1.1
rmApplied flip-+6.3
Simplified6.2
Taylor expanded around inf 6.6
Simplified6.7
if -0.038555408130684456 < x Initial program 30.1
Taylor expanded around 0 0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x)
:name "exp2 (problem 3.3.7)"
:precision binary64
:herbie-target
(* 4 (pow (sinh (/ x 2)) 2))
(+ (- (exp x) 2) (exp (- x))))