Average Error: 7.3 → 0.2
Time: 5.3s
Precision: binary64
Cost: 7040
\[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.im + \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.re\]
↓
\[x.re \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right) - {x.im}^{3}\]
\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.im + \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.re
↓
x.re \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right) - {x.im}^{3}(FPCore (x.re x.im)
:precision binary64
(+
(* (- (* x.re x.re) (* x.im x.im)) x.im)
(* (+ (* x.re x.im) (* x.im x.re)) x.re)))
↓
(FPCore (x.re x.im)
:precision binary64
(- (* x.re (* 3.0 (* x.re x.im))) (pow x.im 3.0)))
double code(double x_46_re, double x_46_im) {
return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_im) + (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_re);
}
↓
double code(double x_46_re, double x_46_im) {
return (x_46_re * (3.0 * (x_46_re * x_46_im))) - pow(x_46_im, 3.0);
}
Try it out
Enter valid numbers for all inputs
Target
| Original | 7.3 |
|---|
| Target | 0.2 |
|---|
| Herbie | 0.2 |
|---|
\[\left(x.re \cdot x.im\right) \cdot \left(2 \cdot x.re\right) + \left(x.im \cdot \left(x.re - x.im\right)\right) \cdot \left(x.re + x.im\right)\]
Alternatives
| Alternative 1 |
|---|
| Error | 32.6 |
|---|
| Cost | 45824 |
|---|
\[\left(\sqrt[3]{x.re} \cdot \sqrt[3]{x.re}\right) \cdot \left(\left(3 \cdot \left(x.re \cdot x.im\right)\right) \cdot \left(\sqrt[3]{\sqrt{x.re}} \cdot \sqrt[3]{\sqrt{x.re}}\right)\right) - {x.im}^{3}\]
| Alternative 2 |
|---|
| Error | 23.4 |
|---|
| Cost | 33024 |
|---|
\[\sqrt{{x.re}^{2} \cdot \left(x.im \cdot 3\right)} \cdot \sqrt{{x.re}^{2} \cdot \left(x.im \cdot 3\right)} - {x.im}^{3}\]
| Alternative 3 |
|---|
| Error | 0.7 |
|---|
| Cost | 27008 |
|---|
\[x.re \cdot \left(\sqrt[3]{3 \cdot \left(x.re \cdot x.im\right)} \cdot \left(\sqrt[3]{3 \cdot \left(x.re \cdot x.im\right)} \cdot \sqrt[3]{3 \cdot \left(x.re \cdot x.im\right)}\right)\right) - {x.im}^{3}\]
| Alternative 4 |
|---|
| Error | 0.6 |
|---|
| Cost | 26496 |
|---|
\[\left(\sqrt[3]{x.re} \cdot \sqrt[3]{x.re}\right) \cdot \left(\sqrt[3]{x.re} \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right)\right) - {x.im}^{3}\]
| Alternative 5 |
|---|
| Error | 0.3 |
|---|
| Cost | 26496 |
|---|
\[x.re \cdot \left(\sqrt[3]{3} \cdot \left(\left(x.re \cdot x.im\right) \cdot \left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right)\right)\right) - {x.im}^{3}\]
| Alternative 6 |
|---|
| Error | 7.5 |
|---|
| Cost | 26432 |
|---|
\[\sqrt[3]{{x.re}^{2}} \cdot \left(\sqrt[3]{x.re} \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right)\right) - {x.im}^{3}\]
| Alternative 7 |
|---|
| Error | 26.1 |
|---|
| Cost | 20224 |
|---|
\[x.re \cdot \left(\sqrt{3 \cdot \left(x.re \cdot x.im\right)} \cdot \sqrt{3 \cdot \left(x.re \cdot x.im\right)}\right) - {x.im}^{3}\]
| Alternative 8 |
|---|
| Error | 0.3 |
|---|
| Cost | 19968 |
|---|
\[x.re \cdot \left(\sqrt{3} \cdot \left(x.re \cdot \left(x.im \cdot \sqrt{3}\right)\right)\right) - {x.im}^{3}\]
| Alternative 9 |
|---|
| Error | 0.3 |
|---|
| Cost | 19968 |
|---|
\[x.re \cdot \left(\sqrt{3} \cdot \left(\left(x.re \cdot x.im\right) \cdot \sqrt{3}\right)\right) - {x.im}^{3}\]
| Alternative 10 |
|---|
| Error | 34.1 |
|---|
| Cost | 19904 |
|---|
\[\sqrt{x.re} \cdot \left(\left(x.im \cdot 3\right) \cdot {x.re}^{1.5}\right) - {x.im}^{3}\]
| Alternative 11 |
|---|
| Error | 13.5 |
|---|
| Cost | 19904 |
|---|
\[x.re \cdot \sqrt[3]{{\left(3 \cdot \left(x.re \cdot x.im\right)\right)}^{3}} - {x.im}^{3}\]
| Alternative 12 |
|---|
| Error | 7.3 |
|---|
| Cost | 13376 |
|---|
\[{x.re}^{2} \cdot \left(x.im \cdot 3\right) - {x.im}^{3}\]
| Alternative 13 |
|---|
| Error | 7.3 |
|---|
| Cost | 13376 |
|---|
\[3 \cdot \left({x.re}^{2} \cdot x.im\right) - {x.im}^{3}\]
| Alternative 14 |
|---|
| Error | 0.2 |
|---|
| Cost | 7040 |
|---|
\[x.re \cdot \left(x.re \cdot \left(x.im \cdot 3\right)\right) - {x.im}^{3}\]
| Alternative 15 |
|---|
| Error | 7.3 |
|---|
| Cost | 1216 |
|---|
\[x.im \cdot \left(x.re \cdot x.re - x.im \cdot x.im\right) + x.re \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right)\]
| Alternative 16 |
|---|
| Error | 61.8 |
|---|
| Cost | 64 |
|---|
\[1\]
| Alternative 17 |
|---|
| Error | 46.9 |
|---|
| Cost | 64 |
|---|
\[0\]
| Alternative 18 |
|---|
| Error | 61.8 |
|---|
| Cost | 64 |
|---|
\[-1\]
Error

Derivation
Initial program 7.3
\[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.im + \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.re\]
Simplified0.2
\[\leadsto \color{blue}{x.re \cdot \left(\left(x.re \cdot x.im\right) \cdot 3\right) - {x.im}^{3}}\]
Simplified0.2
\[\leadsto \color{blue}{x.re \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right) - {x.im}^{3}}\]
Final simplification0.2
\[\leadsto x.re \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right) - {x.im}^{3}\]
Reproduce
herbie shell --seed 2021022
(FPCore (x.re x.im)
:name "math.cube on complex, imaginary part"
:precision binary64
:herbie-target
(+ (* (* x.re x.im) (* 2.0 x.re)) (* (* x.im (- x.re x.im)) (+ x.re x.im)))
(+ (* (- (* x.re x.re) (* x.im x.im)) x.im) (* (+ (* x.re x.im) (* x.im x.re)) x.re)))