x.re \cdot y.re - x.im \cdot y.im
\mathsf{fma}\left(x.re \cdot 1, y.re, -y.im \cdot x.im\right)double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((double) (((double) (x_46_re * y_46_re)) - ((double) (x_46_im * y_46_im))));
}
double code(double x_46_re, double x_46_im, double y_46_re, double y_46_im) {
return ((double) fma(((double) (x_46_re * 1.0)), y_46_re, ((double) -(((double) (y_46_im * x_46_im))))));
}



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
rmApplied *-un-lft-identity0.0
Applied associate-*r*0.0
Applied fma-neg0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020113 +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)))