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 r1757635 = x_re;
double r1757636 = y_im;
double r1757637 = r1757635 * r1757636;
double r1757638 = x_im;
double r1757639 = y_re;
double r1757640 = r1757638 * r1757639;
double r1757641 = r1757637 + r1757640;
return r1757641;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1757642 = x_im;
double r1757643 = y_re;
double r1757644 = r1757642 * r1757643;
double r1757645 = x_re;
double r1757646 = y_im;
double r1757647 = r1757645 * r1757646;
double r1757648 = r1757644 + r1757647;
return r1757648;
}



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