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 r36910 = x_re;
double r36911 = y_re;
double r36912 = r36910 * r36911;
double r36913 = x_im;
double r36914 = y_im;
double r36915 = r36913 * r36914;
double r36916 = r36912 - r36915;
return r36916;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r36917 = x_re;
double r36918 = y_re;
double r36919 = y_im;
double r36920 = x_im;
double r36921 = r36919 * r36920;
double r36922 = -r36921;
double r36923 = fma(r36917, r36918, r36922);
return r36923;
}



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 2019195 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "_multiplyComplex, real part"
(- (* x.re y.re) (* x.im y.im)))