\left(e^{x} - 2\right) + e^{-x}\begin{array}{l}
\mathbf{if}\;x \le -0.03372358286109267827557189889375877100974:\\
\;\;\;\;\frac{\left(e^{x} - 2\right) \cdot \left(e^{x} - 2\right) - e^{x \cdot -2}}{\left(e^{x} - 2\right) - e^{-x}}\\
\mathbf{else}:\\
\;\;\;\;{x}^{2} + \left(\frac{1}{360} \cdot {x}^{6} + \frac{1}{12} \cdot {x}^{4}\right)\\
\end{array}double f(double x) {
double r134207 = x;
double r134208 = exp(r134207);
double r134209 = 2.0;
double r134210 = r134208 - r134209;
double r134211 = -r134207;
double r134212 = exp(r134211);
double r134213 = r134210 + r134212;
return r134213;
}
double f(double x) {
double r134214 = x;
double r134215 = -0.03372358286109268;
bool r134216 = r134214 <= r134215;
double r134217 = exp(r134214);
double r134218 = 2.0;
double r134219 = r134217 - r134218;
double r134220 = r134219 * r134219;
double r134221 = -2.0;
double r134222 = r134214 * r134221;
double r134223 = exp(r134222);
double r134224 = r134220 - r134223;
double r134225 = -r134214;
double r134226 = exp(r134225);
double r134227 = r134219 - r134226;
double r134228 = r134224 / r134227;
double r134229 = 2.0;
double r134230 = pow(r134214, r134229);
double r134231 = 0.002777777777777778;
double r134232 = 6.0;
double r134233 = pow(r134214, r134232);
double r134234 = r134231 * r134233;
double r134235 = 0.08333333333333333;
double r134236 = 4.0;
double r134237 = pow(r134214, r134236);
double r134238 = r134235 * r134237;
double r134239 = r134234 + r134238;
double r134240 = r134230 + r134239;
double r134241 = r134216 ? r134228 : r134240;
return r134241;
}




Bits error versus x
Results
| Original | 29.9 |
|---|---|
| Target | 0.0 |
| Herbie | 0.3 |
if x < -0.03372358286109268Initial program 1.3
rmApplied flip-+6.4
Simplified6.3
if -0.03372358286109268 < x Initial program 30.1
Taylor expanded around 0 0.3
Final simplification0.3
herbie shell --seed 2019323
(FPCore (x)
:name "exp2 (problem 3.3.7)"
:precision binary64
:herbie-target
(* 4 (pow (sinh (/ x 2)) 2))
(+ (- (exp x) 2) (exp (- x))))