Average Error: 29.7 → 0.3
Time: 8.0s
Precision: binary64
Cost: 26753
\[e^{a \cdot x} - 1\]
↓
\[\begin{array}{l}
\mathbf{if}\;a \cdot x \leq -0.0010265468494552537:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} + -1\right)\\
\mathbf{else}:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)\\
\end{array}\]
e^{a \cdot x} - 1↓
\begin{array}{l}
\mathbf{if}\;a \cdot x \leq -0.0010265468494552537:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} + -1\right)\\
\mathbf{else}:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)\\
\end{array}(FPCore (a x) :precision binary64 (- (exp (* a x)) 1.0))
↓
(FPCore (a x)
:precision binary64
(if (<= (* a x) -0.0010265468494552537)
(* (+ 1.0 (sqrt (exp (* a x)))) (+ (sqrt (exp (* a x))) -1.0))
(*
(+ 1.0 (sqrt (exp (* a x))))
(+
(* (* a x) (+ 0.5 (* (* a x) 0.125)))
(* 0.020833333333333332 (pow (* a x) 3.0))))))double code(double a, double x) {
return exp(a * x) - 1.0;
}
↓
double code(double a, double x) {
double tmp;
if ((a * x) <= -0.0010265468494552537) {
tmp = (1.0 + sqrt(exp(a * x))) * (sqrt(exp(a * x)) + -1.0);
} else {
tmp = (1.0 + sqrt(exp(a * x))) * (((a * x) * (0.5 + ((a * x) * 0.125))) + (0.020833333333333332 * pow((a * x), 3.0)));
}
return tmp;
}
Try it out
Enter valid numbers for all inputs
Target
| Original | 29.7 |
|---|
| Target | 0.2 |
|---|
| Herbie | 0.3 |
|---|
\[\begin{array}{l}
\mathbf{if}\;\left|a \cdot x\right| < 0.1:\\
\;\;\;\;\left(a \cdot x\right) \cdot \left(1 + \left(\frac{a \cdot x}{2} + \frac{{\left(a \cdot x\right)}^{2}}{6}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;e^{a \cdot x} - 1\\
\end{array}\]
Alternatives
| Alternative 1 |
|---|
| Error | 29.8 |
|---|
| Cost | 71872 |
|---|
\[\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x}} + -1} \cdot \left(\sqrt[3]{\sqrt{e^{a \cdot x}} + -1} \cdot \sqrt[3]{\sqrt{e^{a \cdot x}} + -1}\right)\right)\]
| Alternative 2 |
|---|
| Error | 29.8 |
|---|
| Cost | 52288 |
|---|
\[\left(\sqrt{e^{a \cdot x}} + -1\right) \cdot \left(\sqrt{1 + \sqrt{e^{a \cdot x}}} \cdot \sqrt{1 + \sqrt{e^{a \cdot x}}}\right)\]
| Alternative 3 |
|---|
| Error | 38.0 |
|---|
| Cost | 41152 |
|---|
\[\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}} \cdot \sqrt{\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}}\right)\]
| Alternative 4 |
|---|
| Error | 29.7 |
|---|
| Cost | 39488 |
|---|
\[\sqrt[3]{e^{a \cdot x} + -1} \cdot \left(\sqrt[3]{e^{a \cdot x} + -1} \cdot \sqrt[3]{e^{a \cdot x} + -1}\right)\]
| Alternative 5 |
|---|
| Error | 33.5 |
|---|
| Cost | 34048 |
|---|
\[\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + \left(0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3} + 0.0026041666666666665 \cdot \left({a}^{4} \cdot {x}^{4}\right)\right)\right)\]
| Alternative 6 |
|---|
| Error | 29.8 |
|---|
| Cost | 26752 |
|---|
\[\frac{-1 + {\left(e^{a \cdot x}\right)}^{3}}{1 + e^{a \cdot x} \cdot \left(1 + e^{a \cdot x}\right)}\]
| Alternative 7 |
|---|
| Error | 29.8 |
|---|
| Cost | 26304 |
|---|
\[\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} + -1\right)\]
| Alternative 8 |
|---|
| Error | 51.1 |
|---|
| Cost | 20864 |
|---|
\[\left(\sqrt{e^{a \cdot x}} + -1\right) \cdot \left(2 + \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)\right)\]
| Alternative 9 |
|---|
| Error | 21.2 |
|---|
| Cost | 20736 |
|---|
\[\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)\]
| Alternative 10 |
|---|
| Error | 29.8 |
|---|
| Cost | 19520 |
|---|
\[\log \left(e^{e^{a \cdot x} + -1}\right)\]
| Alternative 11 |
|---|
| Error | 21.6 |
|---|
| Cost | 13888 |
|---|
\[\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right)\right)\]
| Alternative 12 |
|---|
| Error | 36.2 |
|---|
| Cost | 13056 |
|---|
\[-1 + {\left(e^{a}\right)}^{x}\]
| Alternative 13 |
|---|
| Error | 29.7 |
|---|
| Cost | 6720 |
|---|
\[e^{a \cdot x} + -1\]
| Alternative 14 |
|---|
| Error | 21.3 |
|---|
| Cost | 192 |
|---|
\[a \cdot x\]
| Alternative 15 |
|---|
| Error | 62.0 |
|---|
| Cost | 64 |
|---|
\[1\]
| Alternative 16 |
|---|
| Error | 51.7 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 17 |
|---|
| Error | 41.3 |
|---|
| Cost | 64 |
|---|
\[-1\]
Error

Derivation
- Split input into 2 regimes
if (*.f64 a x) < -0.0010265468494552537
Initial program 0.0
\[e^{a \cdot x} - 1\]
- Using strategy
rm Applied add-sqr-sqrt_binary64_27570.0
\[\leadsto \color{blue}{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}}} - 1\]
Applied difference-of-sqr-1_binary64_27050.0
\[\leadsto \color{blue}{\left(\sqrt{e^{a \cdot x}} + 1\right) \cdot \left(\sqrt{e^{a \cdot x}} - 1\right)}\]
Simplified0.0
\[\leadsto \color{blue}{\left(1 + \sqrt{e^{a \cdot x}}\right)} \cdot \left(\sqrt{e^{a \cdot x}} - 1\right)\]
Simplified0.0
\[\leadsto \left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \color{blue}{\left(-1 + \sqrt{e^{a \cdot x}}\right)}\]
Simplified0.0
\[\leadsto \color{blue}{\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} + -1\right)}\]
if -0.0010265468494552537 < (*.f64 a x)
Initial program 44.7
\[e^{a \cdot x} - 1\]
- Using strategy
rm Applied add-sqr-sqrt_binary64_275744.7
\[\leadsto \color{blue}{\sqrt{e^{a \cdot x}} \cdot \sqrt{e^{a \cdot x}}} - 1\]
Applied difference-of-sqr-1_binary64_270544.7
\[\leadsto \color{blue}{\left(\sqrt{e^{a \cdot x}} + 1\right) \cdot \left(\sqrt{e^{a \cdot x}} - 1\right)}\]
Simplified44.7
\[\leadsto \color{blue}{\left(1 + \sqrt{e^{a \cdot x}}\right)} \cdot \left(\sqrt{e^{a \cdot x}} - 1\right)\]
Simplified44.7
\[\leadsto \left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \color{blue}{\left(-1 + \sqrt{e^{a \cdot x}}\right)}\]
Taylor expanded around 0 14.6
\[\leadsto \left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \color{blue}{\left(0.5 \cdot \left(a \cdot x\right) + \left(0.020833333333333332 \cdot \left({a}^{3} \cdot {x}^{3}\right) + 0.125 \cdot \left({a}^{2} \cdot {x}^{2}\right)\right)\right)}\]
Simplified0.4
\[\leadsto \left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \color{blue}{\left(\left(a \cdot x\right) \cdot \left(0.5 + 0.125 \cdot \left(a \cdot x\right)\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)}\]
Simplified0.4
\[\leadsto \color{blue}{\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)}\]
- Recombined 2 regimes into one program.
Final simplification0.3
\[\leadsto \begin{array}{l}
\mathbf{if}\;a \cdot x \leq -0.0010265468494552537:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\sqrt{e^{a \cdot x}} + -1\right)\\
\mathbf{else}:\\
\;\;\;\;\left(1 + \sqrt{e^{a \cdot x}}\right) \cdot \left(\left(a \cdot x\right) \cdot \left(0.5 + \left(a \cdot x\right) \cdot 0.125\right) + 0.020833333333333332 \cdot {\left(a \cdot x\right)}^{3}\right)\\
\end{array}\]
Reproduce
herbie shell --seed 2021042
(FPCore (a x)
:name "expax (section 3.5)"
:precision binary64
: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))