e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -9.4276480012748349 \cdot 10^{-4}:\\
\;\;\;\;\left(\sqrt{e^{a \cdot x}} + \sqrt{1}\right) \cdot \left(\sqrt{e^{a \cdot x}} - \sqrt{1}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \left(\left(\left|a\right| \cdot \left|x\right|\right) \cdot \left(\left|a\right| \cdot \left|x\right|\right)\right) + a \cdot x\\
\end{array}double f(double a, double x) {
double r143241 = a;
double r143242 = x;
double r143243 = r143241 * r143242;
double r143244 = exp(r143243);
double r143245 = 1.0;
double r143246 = r143244 - r143245;
return r143246;
}
double f(double a, double x) {
double r143247 = a;
double r143248 = x;
double r143249 = r143247 * r143248;
double r143250 = -0.0009427648001274835;
bool r143251 = r143249 <= r143250;
double r143252 = exp(r143249);
double r143253 = sqrt(r143252);
double r143254 = 1.0;
double r143255 = sqrt(r143254);
double r143256 = r143253 + r143255;
double r143257 = r143253 - r143255;
double r143258 = r143256 * r143257;
double r143259 = 0.5;
double r143260 = fabs(r143247);
double r143261 = fabs(r143248);
double r143262 = r143260 * r143261;
double r143263 = r143262 * r143262;
double r143264 = r143259 * r143263;
double r143265 = r143264 + r143249;
double r143266 = r143251 ? r143258 : r143265;
return r143266;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.4 |
if (* a x) < -0.0009427648001274835Initial program 0.0
rmApplied add-sqr-sqrt0.0
Applied add-sqr-sqrt0.0
Applied difference-of-squares0.0
if -0.0009427648001274835 < (* a x) Initial program 44.3
Taylor expanded around 0 14.2
Simplified7.5
Taylor expanded around 0 8.4
rmApplied add-sqr-sqrt8.4
Applied add-sqr-sqrt8.4
Applied unswap-sqr8.4
Simplified8.4
Simplified0.6
Final simplification0.4
herbie shell --seed 2020045
(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))