e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le \frac{-5354695247752331}{154742504910672534362390528}:\\
\;\;\;\;\frac{\sqrt[3]{e^{\left(a \cdot x\right) \cdot 3} - {1}^{3}} \cdot \sqrt[3]{\frac{\left(-{1}^{6}\right) + {\left(e^{a \cdot x}\right)}^{6}}{e^{\left(a \cdot x\right) \cdot 3} + {1}^{3}}}}{\sqrt[3]{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1} \cdot \sqrt[3]{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}} \cdot \frac{\sqrt[3]{e^{\left(a \cdot x\right) \cdot 3} - {1}^{3}}}{\sqrt[3]{e^{a \cdot x} \cdot \left(e^{a \cdot x} + 1\right) + 1 \cdot 1}}\\
\mathbf{elif}\;a \cdot x \le \frac{7011307703079651}{4835703278458516698824704}:\\
\;\;\;\;\frac{1}{2} \cdot \left({a}^{2} \cdot {x}^{2}\right) + \left(\frac{375299968947541}{2251799813685248} \cdot \left({a}^{3} \cdot {x}^{3}\right) + 1 \cdot \left(a \cdot x\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{{\left(e^{a \cdot x}\right)}^{3} - {1}^{3}}{e^{a \cdot x} \cdot \left(\left(\sqrt[3]{e^{a \cdot x} + 1} \cdot \sqrt[3]{e^{a \cdot x} + 1}\right) \cdot \sqrt[3]{e^{a \cdot x} + 1}\right) + 1 \cdot 1}\\
\end{array}double f(double a, double x) {
double r399279 = a;
double r399280 = x;
double r399281 = r399279 * r399280;
double r399282 = exp(r399281);
double r399283 = 1.0;
double r399284 = r399282 - r399283;
return r399284;
}
double f(double a, double x) {
double r399285 = a;
double r399286 = x;
double r399287 = r399285 * r399286;
double r399288 = -5354695247752331.0;
double r399289 = 1.5474250491067253e+26;
double r399290 = r399288 / r399289;
bool r399291 = r399287 <= r399290;
double r399292 = 3.0;
double r399293 = r399287 * r399292;
double r399294 = exp(r399293);
double r399295 = 1.0;
double r399296 = pow(r399295, r399292);
double r399297 = r399294 - r399296;
double r399298 = cbrt(r399297);
double r399299 = 6.0;
double r399300 = pow(r399295, r399299);
double r399301 = -r399300;
double r399302 = exp(r399287);
double r399303 = pow(r399302, r399299);
double r399304 = r399301 + r399303;
double r399305 = r399294 + r399296;
double r399306 = r399304 / r399305;
double r399307 = cbrt(r399306);
double r399308 = r399298 * r399307;
double r399309 = r399302 + r399295;
double r399310 = r399302 * r399309;
double r399311 = r399295 * r399295;
double r399312 = r399310 + r399311;
double r399313 = cbrt(r399312);
double r399314 = r399313 * r399313;
double r399315 = r399308 / r399314;
double r399316 = r399298 / r399313;
double r399317 = r399315 * r399316;
double r399318 = 7011307703079651.0;
double r399319 = 4.835703278458517e+24;
double r399320 = r399318 / r399319;
bool r399321 = r399287 <= r399320;
double r399322 = 2.0;
double r399323 = r399295 / r399322;
double r399324 = 2.0;
double r399325 = pow(r399285, r399324);
double r399326 = pow(r399286, r399324);
double r399327 = r399325 * r399326;
double r399328 = r399323 * r399327;
double r399329 = 375299968947541.0;
double r399330 = 2251799813685248.0;
double r399331 = r399329 / r399330;
double r399332 = pow(r399285, r399292);
double r399333 = pow(r399286, r399292);
double r399334 = r399332 * r399333;
double r399335 = r399331 * r399334;
double r399336 = r399295 * r399287;
double r399337 = r399335 + r399336;
double r399338 = r399328 + r399337;
double r399339 = pow(r399302, r399292);
double r399340 = r399339 - r399296;
double r399341 = cbrt(r399309);
double r399342 = r399341 * r399341;
double r399343 = r399342 * r399341;
double r399344 = r399302 * r399343;
double r399345 = r399344 + r399311;
double r399346 = r399340 / r399345;
double r399347 = r399321 ? r399338 : r399346;
double r399348 = r399291 ? r399317 : r399347;
return r399348;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.2 |
|---|---|
| Target | 0.2 |
| Herbie | 8.8 |
if (* a x) < -3.4603906992738746e-11Initial program 0.5
rmApplied flip3--0.5
Simplified0.5
rmApplied pow-exp0.5
rmApplied add-cube-cbrt0.5
Applied add-cube-cbrt0.5
Applied times-frac0.5
rmApplied flip--0.5
Simplified0.5
if -3.4603906992738746e-11 < (* a x) < 1.4499044501577968e-09Initial program 45.2
rmApplied flip3--45.2
Simplified45.2
Taylor expanded around 0 13.3
Simplified13.3
if 1.4499044501577968e-09 < (* a x) Initial program 10.5
rmApplied flip3--10.5
Simplified10.5
rmApplied add-cube-cbrt10.6
Final simplification8.8
herbie shell --seed 350497007
(FPCore (a x)
:name "expax (section 3.5)"
:precision binary64
:herbie-expected 14
:herbie-target
(if (< (fabs (* a x)) 0.10000000000000001) (* (* a x) (+ 1 (+ (/ (* a x) 2) (/ (pow (* a x) 2) 6)))) (- (exp (* a x)) 1))
(- (exp (* a x)) 1))