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 r1016244 = x_re;
double r1016245 = y_im;
double r1016246 = r1016244 * r1016245;
double r1016247 = x_im;
double r1016248 = y_re;
double r1016249 = r1016247 * r1016248;
double r1016250 = r1016246 + r1016249;
return r1016250;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1016251 = x_im;
double r1016252 = y_re;
double r1016253 = r1016251 * r1016252;
double r1016254 = x_re;
double r1016255 = y_im;
double r1016256 = r1016254 * r1016255;
double r1016257 = r1016253 + r1016256;
return r1016257;
}



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