x.re \cdot y.im + x.im \cdot y.re
\mathsf{fma}\left(x.re, y.im, x.im \cdot y.re\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r80501 = x_re;
double r80502 = y_im;
double r80503 = r80501 * r80502;
double r80504 = x_im;
double r80505 = y_re;
double r80506 = r80504 * r80505;
double r80507 = r80503 + r80506;
return r80507;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r80508 = x_re;
double r80509 = y_im;
double r80510 = x_im;
double r80511 = y_re;
double r80512 = r80510 * r80511;
double r80513 = fma(r80508, r80509, r80512);
return r80513;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020083 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "_multiplyComplex, imaginary part"
:precision binary64
(+ (* x.re y.im) (* x.im y.re)))