e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -2.63503256833740627 \cdot 10^{-11}:\\
\;\;\;\;\frac{\frac{\log \left(e^{e^{\left(a \cdot x\right) \cdot 6} - {1}^{6}}\right)}{e^{\left(a \cdot x\right) \cdot 4} + \left(1 \cdot 1\right) \cdot \left(e^{2 \cdot \left(a \cdot x\right)} + 1 \cdot 1\right)}}{e^{a \cdot x} + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{4}{3} \cdot \left({a}^{3} \cdot {x}^{3}\right) + x \cdot \left(\left(2 \cdot {a}^{2}\right) \cdot x + 2 \cdot a\right)}{e^{a \cdot x} + 1}\\
\end{array}double f(double a, double x) {
double r76217 = a;
double r76218 = x;
double r76219 = r76217 * r76218;
double r76220 = exp(r76219);
double r76221 = 1.0;
double r76222 = r76220 - r76221;
return r76222;
}
double f(double a, double x) {
double r76223 = a;
double r76224 = x;
double r76225 = r76223 * r76224;
double r76226 = -2.6350325683374063e-11;
bool r76227 = r76225 <= r76226;
double r76228 = 6.0;
double r76229 = r76225 * r76228;
double r76230 = exp(r76229);
double r76231 = 1.0;
double r76232 = pow(r76231, r76228);
double r76233 = r76230 - r76232;
double r76234 = exp(r76233);
double r76235 = log(r76234);
double r76236 = 4.0;
double r76237 = r76225 * r76236;
double r76238 = exp(r76237);
double r76239 = r76231 * r76231;
double r76240 = 2.0;
double r76241 = r76240 * r76225;
double r76242 = exp(r76241);
double r76243 = r76242 + r76239;
double r76244 = r76239 * r76243;
double r76245 = r76238 + r76244;
double r76246 = r76235 / r76245;
double r76247 = exp(r76225);
double r76248 = r76247 + r76231;
double r76249 = r76246 / r76248;
double r76250 = 1.3333333333333333;
double r76251 = 3.0;
double r76252 = pow(r76223, r76251);
double r76253 = pow(r76224, r76251);
double r76254 = r76252 * r76253;
double r76255 = r76250 * r76254;
double r76256 = pow(r76223, r76240);
double r76257 = r76240 * r76256;
double r76258 = r76257 * r76224;
double r76259 = r76240 * r76223;
double r76260 = r76258 + r76259;
double r76261 = r76224 * r76260;
double r76262 = r76255 + r76261;
double r76263 = r76262 / r76248;
double r76264 = r76227 ? r76249 : r76263;
return r76264;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.8 |
|---|---|
| Target | 0.2 |
| Herbie | 9.7 |
if (* a x) < -2.6350325683374063e-11Initial program 0.5
rmApplied flip--0.5
Simplified0.4
rmApplied flip3--0.4
Simplified0.4
Simplified0.4
rmApplied add-log-exp0.4
Applied add-log-exp0.4
Applied diff-log0.4
Simplified0.4
if -2.6350325683374063e-11 < (* a x) Initial program 45.0
rmApplied flip--45.0
Simplified45.0
rmApplied add-log-exp45.0
Applied exp-to-pow45.0
Taylor expanded around 0 14.5
Simplified14.5
Final simplification9.7
herbie shell --seed 2019199
(FPCore (a x)
:name "expax (section 3.5)"
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.1) (* (* a x) (+ 1.0 (+ (/ (* a x) 2.0) (/ (pow (* a x) 2.0) 6.0)))) (- (exp (* a x)) 1.0))
(- (exp (* a x)) 1.0))