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 r1938420 = x_re;
double r1938421 = y_im;
double r1938422 = r1938420 * r1938421;
double r1938423 = x_im;
double r1938424 = y_re;
double r1938425 = r1938423 * r1938424;
double r1938426 = r1938422 + r1938425;
return r1938426;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1938427 = x_im;
double r1938428 = y_re;
double r1938429 = r1938427 * r1938428;
double r1938430 = x_re;
double r1938431 = y_im;
double r1938432 = r1938430 * r1938431;
double r1938433 = r1938429 + r1938432;
return r1938433;
}



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