x.re \cdot y.im + x.im \cdot y.re
x.im \cdot y.re + x.re \cdot y.im
double f(double x_re, double x_im, double y_re, double y_im) {
double r2085871 = x_re;
double r2085872 = y_im;
double r2085873 = r2085871 * r2085872;
double r2085874 = x_im;
double r2085875 = y_re;
double r2085876 = r2085874 * r2085875;
double r2085877 = r2085873 + r2085876;
return r2085877;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2085878 = x_im;
double r2085879 = y_re;
double r2085880 = r2085878 * r2085879;
double r2085881 = x_re;
double r2085882 = y_im;
double r2085883 = r2085881 * r2085882;
double r2085884 = r2085880 + r2085883;
return r2085884;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 0.0
Final simplification0.0
herbie shell --seed 2019168
(FPCore (x.re x.im y.re y.im)
:name "_multiplyComplex, imaginary part"
(+ (* x.re y.im) (* x.im y.re)))