\left(e^{x} - 2\right) + e^{-x}\begin{array}{l}
\mathbf{if}\;x \le 0.027742406259524545:\\
\;\;\;\;{x}^{2} + \left(\frac{1}{360} \cdot {x}^{6} + \frac{1}{12} \cdot {x}^{4}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{x} \cdot e^{x} - 2 \cdot 2}{e^{x} + 2} + e^{-x}\\
\end{array}double f(double x) {
double r102203 = x;
double r102204 = exp(r102203);
double r102205 = 2.0;
double r102206 = r102204 - r102205;
double r102207 = -r102203;
double r102208 = exp(r102207);
double r102209 = r102206 + r102208;
return r102209;
}
double f(double x) {
double r102210 = x;
double r102211 = 0.027742406259524545;
bool r102212 = r102210 <= r102211;
double r102213 = 2.0;
double r102214 = pow(r102210, r102213);
double r102215 = 0.002777777777777778;
double r102216 = 6.0;
double r102217 = pow(r102210, r102216);
double r102218 = r102215 * r102217;
double r102219 = 0.08333333333333333;
double r102220 = 4.0;
double r102221 = pow(r102210, r102220);
double r102222 = r102219 * r102221;
double r102223 = r102218 + r102222;
double r102224 = r102214 + r102223;
double r102225 = exp(r102210);
double r102226 = r102225 * r102225;
double r102227 = 2.0;
double r102228 = r102227 * r102227;
double r102229 = r102226 - r102228;
double r102230 = r102225 + r102227;
double r102231 = r102229 / r102230;
double r102232 = -r102210;
double r102233 = exp(r102232);
double r102234 = r102231 + r102233;
double r102235 = r102212 ? r102224 : r102234;
return r102235;
}




Bits error versus x
Results
| Original | 29.8 |
|---|---|
| Target | 0.0 |
| Herbie | 0.4 |
if x < 0.027742406259524545Initial program 30.0
Taylor expanded around 0 0.4
if 0.027742406259524545 < x Initial program 1.5
rmApplied flip--2.6
Final simplification0.4
herbie shell --seed 2020035
(FPCore (x)
:name "exp2 (problem 3.3.7)"
:precision binary64
:herbie-target
(* 4 (pow (sinh (/ x 2)) 2))
(+ (- (exp x) 2) (exp (- x))))