x.re \cdot y.re - x.im \cdot y.im
\mathsf{fma}\left(x.re, y.re, -y.im \cdot x.im\right)double f(double x_re, double x_im, double y_re, double y_im) {
double r92310 = x_re;
double r92311 = y_re;
double r92312 = r92310 * r92311;
double r92313 = x_im;
double r92314 = y_im;
double r92315 = r92313 * r92314;
double r92316 = r92312 - r92315;
return r92316;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r92317 = x_re;
double r92318 = y_re;
double r92319 = y_im;
double r92320 = x_im;
double r92321 = r92319 * r92320;
double r92322 = -r92321;
double r92323 = fma(r92317, r92318, r92322);
return r92323;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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