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 r896825 = x_re;
double r896826 = y_im;
double r896827 = r896825 * r896826;
double r896828 = x_im;
double r896829 = y_re;
double r896830 = r896828 * r896829;
double r896831 = r896827 + r896830;
return r896831;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r896832 = x_im;
double r896833 = y_re;
double r896834 = r896832 * r896833;
double r896835 = x_re;
double r896836 = y_im;
double r896837 = r896835 * r896836;
double r896838 = r896834 + r896837;
return r896838;
}



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