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 r993703 = x_re;
double r993704 = y_im;
double r993705 = r993703 * r993704;
double r993706 = x_im;
double r993707 = y_re;
double r993708 = r993706 * r993707;
double r993709 = r993705 + r993708;
return r993709;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r993710 = x_im;
double r993711 = y_re;
double r993712 = r993710 * r993711;
double r993713 = x_re;
double r993714 = y_im;
double r993715 = r993713 * r993714;
double r993716 = r993712 + r993715;
return r993716;
}



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