re \cdot im + im \cdot re
\mathsf{fma}\left(re, im, im \cdot re\right)double f(double re, double im) {
double r1802 = re;
double r1803 = im;
double r1804 = r1802 * r1803;
double r1805 = r1803 * r1802;
double r1806 = r1804 + r1805;
return r1806;
}
double f(double re, double im) {
double r1807 = re;
double r1808 = im;
double r1809 = r1808 * r1807;
double r1810 = fma(r1807, r1808, r1809);
return r1810;
}



Bits error versus re



Bits error versus im
Initial program 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020025 +o rules:numerics
(FPCore (re im)
:name "math.square on complex, imaginary part"
:precision binary64
(+ (* re im) (* im re)))