\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}double f(double x_re, double x_im, double y_re, double y_im) {
double r1270022 = x_im;
double r1270023 = y_re;
double r1270024 = r1270022 * r1270023;
double r1270025 = x_re;
double r1270026 = y_im;
double r1270027 = r1270025 * r1270026;
double r1270028 = r1270024 - r1270027;
double r1270029 = r1270023 * r1270023;
double r1270030 = r1270026 * r1270026;
double r1270031 = r1270029 + r1270030;
double r1270032 = r1270028 / r1270031;
return r1270032;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1270033 = x_im;
double r1270034 = y_re;
double r1270035 = r1270033 * r1270034;
double r1270036 = x_re;
double r1270037 = y_im;
double r1270038 = r1270036 * r1270037;
double r1270039 = r1270035 - r1270038;
double r1270040 = r1270034 * r1270034;
double r1270041 = r1270037 * r1270037;
double r1270042 = r1270040 + r1270041;
double r1270043 = sqrt(r1270042);
double r1270044 = r1270039 / r1270043;
double r1270045 = r1270044 / r1270043;
return r1270045;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.4
rmApplied add-sqr-sqrt25.4
Applied associate-/r*25.3
Final simplification25.3
herbie shell --seed 2019152
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))