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 r1037028 = x_re;
double r1037029 = y_im;
double r1037030 = r1037028 * r1037029;
double r1037031 = x_im;
double r1037032 = y_re;
double r1037033 = r1037031 * r1037032;
double r1037034 = r1037030 + r1037033;
return r1037034;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1037035 = x_im;
double r1037036 = y_re;
double r1037037 = r1037035 * r1037036;
double r1037038 = x_re;
double r1037039 = y_im;
double r1037040 = r1037038 * r1037039;
double r1037041 = r1037037 + r1037040;
return r1037041;
}



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 2019141
(FPCore (x.re x.im y.re y.im)
:name "_multiplyComplex, imaginary part"
(+ (* x.re y.im) (* x.im y.re)))