e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \le -1.19588563424716459 \cdot 10^{42}:\\
\;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 4} \cdot e^{\left(a \cdot x\right) \cdot 4} - {1}^{4} \cdot {1}^{4}}{\left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right) \cdot \left(e^{\left(a \cdot x\right) \cdot 4} + {1}^{4}\right)}}{e^{a \cdot x} + 1}\\
\mathbf{elif}\;a \le 1.35216653522671676 \cdot 10^{102}:\\
\;\;\;\;x \cdot \left(a + x \cdot \left(\frac{1}{2} \cdot {a}^{2} + \left(\frac{1}{6} \cdot {a}^{3}\right) \cdot x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(x \cdot a\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\
\end{array}double f(double a, double x) {
double r130199 = a;
double r130200 = x;
double r130201 = r130199 * r130200;
double r130202 = exp(r130201);
double r130203 = 1.0;
double r130204 = r130202 - r130203;
return r130204;
}
double f(double a, double x) {
double r130205 = a;
double r130206 = -1.1958856342471646e+42;
bool r130207 = r130205 <= r130206;
double r130208 = x;
double r130209 = r130205 * r130208;
double r130210 = 4.0;
double r130211 = r130209 * r130210;
double r130212 = exp(r130211);
double r130213 = r130212 * r130212;
double r130214 = 1.0;
double r130215 = pow(r130214, r130210);
double r130216 = r130215 * r130215;
double r130217 = r130213 - r130216;
double r130218 = 2.0;
double r130219 = r130208 * r130205;
double r130220 = r130218 * r130219;
double r130221 = exp(r130220);
double r130222 = r130214 * r130214;
double r130223 = r130221 + r130222;
double r130224 = r130212 + r130215;
double r130225 = r130223 * r130224;
double r130226 = r130217 / r130225;
double r130227 = exp(r130209);
double r130228 = r130227 + r130214;
double r130229 = r130226 / r130228;
double r130230 = 1.3521665352267168e+102;
bool r130231 = r130205 <= r130230;
double r130232 = 0.5;
double r130233 = pow(r130205, r130218);
double r130234 = r130232 * r130233;
double r130235 = 0.16666666666666666;
double r130236 = 3.0;
double r130237 = pow(r130205, r130236);
double r130238 = r130235 * r130237;
double r130239 = r130238 * r130208;
double r130240 = r130234 + r130239;
double r130241 = r130208 * r130240;
double r130242 = r130205 + r130241;
double r130243 = r130208 * r130242;
double r130244 = 6.0;
double r130245 = r130209 * r130244;
double r130246 = exp(r130245);
double r130247 = pow(r130214, r130244);
double r130248 = r130246 - r130247;
double r130249 = r130222 * r130223;
double r130250 = r130212 + r130249;
double r130251 = r130248 / r130250;
double r130252 = r130251 / r130228;
double r130253 = r130231 ? r130243 : r130252;
double r130254 = r130207 ? r130229 : r130253;
return r130254;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.6 |
|---|---|
| Target | 0.2 |
| Herbie | 13.7 |
if a < -1.1958856342471646e+42Initial program 19.7
rmApplied flip--19.8
Simplified19.7
rmApplied flip--19.8
Simplified19.7
rmApplied flip--19.8
Applied associate-/l/19.8
if -1.1958856342471646e+42 < a < 1.3521665352267168e+102Initial program 35.0
Taylor expanded around 0 19.2
Simplified12.0
if 1.3521665352267168e+102 < a Initial program 15.0
rmApplied flip--15.0
Simplified14.9
rmApplied flip3--14.9
Simplified14.8
Simplified14.8
Final simplification13.7
herbie shell --seed 2020043
(FPCore (a x)
:name "expax (section 3.5)"
:precision binary64
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1 (+ (/ (* a x) 2) (/ (pow (* a x) 2) 6)))) (- (exp (* a x)) 1))
(- (exp (* a x)) 1))