e^{a \cdot x} - 1\begin{array}{l}
\mathbf{if}\;a \cdot x \le -5.8466223410137292:\\
\;\;\;\;\left(\sqrt[3]{e^{a \cdot x}} \cdot \sqrt[3]{e^{a \cdot x}}\right) \cdot \sqrt[3]{e^{a \cdot x}} - 1\\
\mathbf{elif}\;a \cdot x \le 1.81556124406024112 \cdot 10^{-5}:\\
\;\;\;\;\left(a \cdot x + \frac{1}{2} \cdot {\left(a \cdot x\right)}^{2}\right) + \frac{1}{6} \cdot {\left(a \cdot x\right)}^{3}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{e^{a \cdot x} - 1} \cdot \sqrt{e^{a \cdot x} - 1}\\
\end{array}double f(double a, double x) {
double r98961 = a;
double r98962 = x;
double r98963 = r98961 * r98962;
double r98964 = exp(r98963);
double r98965 = 1.0;
double r98966 = r98964 - r98965;
return r98966;
}
double f(double a, double x) {
double r98967 = a;
double r98968 = x;
double r98969 = r98967 * r98968;
double r98970 = -5.846622341013729;
bool r98971 = r98969 <= r98970;
double r98972 = exp(r98969);
double r98973 = cbrt(r98972);
double r98974 = r98973 * r98973;
double r98975 = r98974 * r98973;
double r98976 = 1.0;
double r98977 = r98975 - r98976;
double r98978 = 1.815561244060241e-05;
bool r98979 = r98969 <= r98978;
double r98980 = 0.5;
double r98981 = 2.0;
double r98982 = pow(r98969, r98981);
double r98983 = r98980 * r98982;
double r98984 = r98969 + r98983;
double r98985 = 0.16666666666666666;
double r98986 = 3.0;
double r98987 = pow(r98969, r98986);
double r98988 = r98985 * r98987;
double r98989 = r98984 + r98988;
double r98990 = r98972 - r98976;
double r98991 = sqrt(r98990);
double r98992 = r98991 * r98991;
double r98993 = r98979 ? r98989 : r98992;
double r98994 = r98971 ? r98977 : r98993;
return r98994;
}




Bits error versus a




Bits error versus x
Results
| Original | 29.4 |
|---|---|
| Target | 0.2 |
| Herbie | 0.3 |
if (* a x) < -5.846622341013729Initial program 0
rmApplied add-cube-cbrt0
if -5.846622341013729 < (* a x) < 1.815561244060241e-05Initial program 44.4
Taylor expanded around 0 14.1
Simplified14.1
rmApplied pow-prod-down4.4
rmApplied distribute-lft-in4.4
Simplified4.4
Simplified0.3
if 1.815561244060241e-05 < (* a x) Initial program 5.2
rmApplied add-sqr-sqrt5.2
Final simplification0.3
herbie shell --seed 2020049
(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))