double f(double x) {
double r9989017 = x;
double r9989018 = exp(r9989017);
double r9989019 = 2.0;
double r9989020 = r9989018 - r9989019;
double r9989021 = -r9989017;
double r9989022 = exp(r9989021);
double r9989023 = r9989020 + r9989022;
return r9989023;
}
double f(double x) {
double r9989024 = x;
double r9989025 = r9989024 * r9989024;
double r9989026 = r9989025 * r9989025;
double r9989027 = 0.002777777777777778;
double r9989028 = r9989026 * r9989027;
double r9989029 = 0.08333333333333333;
double r9989030 = fma(r9989026, r9989029, r9989025);
double r9989031 = sqrt(r9989030);
double r9989032 = r9989031 * r9989031;
double r9989033 = fma(r9989028, r9989025, r9989032);
return r9989033;
}
\left(e^{x} - 2\right) + e^{-x}(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{360}\right) \cdot \left(x \cdot x\right) + \left(\sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*} \cdot \sqrt{(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{1}{12} + \left(x \cdot x\right))_*}\right))_*



Bits error versus x
| Original | 29.6 |
|---|---|
| Target | 0.0 |
| Herbie | 0.6 |
Initial program 29.6
Simplified29.6
Taylor expanded around 0 0.6
Simplified0.6
rmApplied add-sqr-sqrt0.6
Final simplification0.6
herbie shell --seed 2019102 +o rules:numerics
(FPCore (x)
:name "exp2 (problem 3.3.7)"
:herbie-target
(* 4 (pow (sinh (/ x 2)) 2))
(+ (- (exp x) 2) (exp (- x))))