\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 r91103 = x;
double r91104 = exp(r91103);
double r91105 = 2.0;
double r91106 = r91104 - r91105;
double r91107 = -r91103;
double r91108 = exp(r91107);
double r91109 = r91106 + r91108;
return r91109;
}
double f(double x) {
double r91110 = x;
double r91111 = -0.03372358286109268;
bool r91112 = r91110 <= r91111;
double r91113 = exp(r91110);
double r91114 = 2.0;
double r91115 = r91113 - r91114;
double r91116 = r91115 * r91115;
double r91117 = -2.0;
double r91118 = r91110 * r91117;
double r91119 = exp(r91118);
double r91120 = r91116 - r91119;
double r91121 = -r91110;
double r91122 = exp(r91121);
double r91123 = r91115 - r91122;
double r91124 = r91120 / r91123;
double r91125 = 2.0;
double r91126 = pow(r91110, r91125);
double r91127 = 0.002777777777777778;
double r91128 = 6.0;
double r91129 = pow(r91110, r91128);
double r91130 = r91127 * r91129;
double r91131 = 0.08333333333333333;
double r91132 = 4.0;
double r91133 = pow(r91110, r91132);
double r91134 = r91131 * r91133;
double r91135 = r91130 + r91134;
double r91136 = r91126 + r91135;
double r91137 = r91112 ? r91124 : r91136;
return r91137;
}




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))))