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);
}

Error

Bits error versus x.re

Bits error versus x.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original7.3
Target0.2
Herbie0.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
Error32.6
Cost45824
\[\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
Error23.4
Cost33024
\[\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
Error0.7
Cost27008
\[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
Error0.6
Cost26496
\[\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
Error0.3
Cost26496
\[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
Error7.5
Cost26432
\[\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
Error26.1
Cost20224
\[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
Error0.3
Cost19968
\[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
Error0.3
Cost19968
\[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
Error34.1
Cost19904
\[\sqrt{x.re} \cdot \left(\left(x.im \cdot 3\right) \cdot {x.re}^{1.5}\right) - {x.im}^{3}\]
Alternative 11
Error13.5
Cost19904
\[x.re \cdot \sqrt[3]{{\left(3 \cdot \left(x.re \cdot x.im\right)\right)}^{3}} - {x.im}^{3}\]
Alternative 12
Error7.3
Cost13376
\[{x.re}^{2} \cdot \left(x.im \cdot 3\right) - {x.im}^{3}\]
Alternative 13
Error7.3
Cost13376
\[3 \cdot \left({x.re}^{2} \cdot x.im\right) - {x.im}^{3}\]
Alternative 14
Error0.2
Cost7040
\[x.re \cdot \left(x.re \cdot \left(x.im \cdot 3\right)\right) - {x.im}^{3}\]
Alternative 15
Error7.3
Cost1216
\[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
Error61.8
Cost64
\[1\]
Alternative 17
Error46.9
Cost64
\[0\]
Alternative 18
Error61.8
Cost64
\[-1\]

Error

Derivation

  1. 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\]
  2. Simplified0.2

    \[\leadsto \color{blue}{x.re \cdot \left(\left(x.re \cdot x.im\right) \cdot 3\right) - {x.im}^{3}}\]
  3. Simplified0.2

    \[\leadsto \color{blue}{x.re \cdot \left(3 \cdot \left(x.re \cdot x.im\right)\right) - {x.im}^{3}}\]
  4. 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)))