\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
\left(\left(x.re \cdot x.im\right) \cdot 3\right) \cdot x.re - {x.im}^{3}double f(double x_re, double x_im) {
double r9150972 = x_re;
double r9150973 = r9150972 * r9150972;
double r9150974 = x_im;
double r9150975 = r9150974 * r9150974;
double r9150976 = r9150973 - r9150975;
double r9150977 = r9150976 * r9150974;
double r9150978 = r9150972 * r9150974;
double r9150979 = r9150974 * r9150972;
double r9150980 = r9150978 + r9150979;
double r9150981 = r9150980 * r9150972;
double r9150982 = r9150977 + r9150981;
return r9150982;
}
double f(double x_re, double x_im) {
double r9150983 = x_re;
double r9150984 = x_im;
double r9150985 = r9150983 * r9150984;
double r9150986 = 3.0;
double r9150987 = r9150985 * r9150986;
double r9150988 = r9150987 * r9150983;
double r9150989 = pow(r9150984, r9150986);
double r9150990 = r9150988 - r9150989;
return r9150990;
}




Bits error versus x.re




Bits error versus x.im
Results
| Original | 6.6 |
|---|---|
| Target | 0.2 |
| Herbie | 0.2 |
Initial program 6.6
Taylor expanded around 0 6.5
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.2
Simplified0.2
rmApplied associate-*l*0.2
Final simplification0.2
herbie shell --seed 2019162
(FPCore (x.re x.im)
:name "math.cube on complex, imaginary part"
:herbie-target
(+ (* (* x.re x.im) (* 2 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)))