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 r3478199 = x_re;
double r3478200 = y_im;
double r3478201 = r3478199 * r3478200;
double r3478202 = x_im;
double r3478203 = y_re;
double r3478204 = r3478202 * r3478203;
double r3478205 = r3478201 + r3478204;
return r3478205;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3478206 = x_im;
double r3478207 = y_re;
double r3478208 = r3478206 * r3478207;
double r3478209 = x_re;
double r3478210 = y_im;
double r3478211 = r3478209 * r3478210;
double r3478212 = r3478208 + r3478211;
return r3478212;
}



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