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 r2701839 = x_re;
double r2701840 = y_im;
double r2701841 = r2701839 * r2701840;
double r2701842 = x_im;
double r2701843 = y_re;
double r2701844 = r2701842 * r2701843;
double r2701845 = r2701841 + r2701844;
return r2701845;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2701846 = x_im;
double r2701847 = y_re;
double r2701848 = r2701846 * r2701847;
double r2701849 = x_re;
double r2701850 = y_im;
double r2701851 = r2701849 * r2701850;
double r2701852 = r2701848 + r2701851;
return r2701852;
}



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