\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\frac{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}{x.im \cdot y.re - x.re \cdot y.im}}}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r3059013 = x_im;
double r3059014 = y_re;
double r3059015 = r3059013 * r3059014;
double r3059016 = x_re;
double r3059017 = y_im;
double r3059018 = r3059016 * r3059017;
double r3059019 = r3059015 - r3059018;
double r3059020 = r3059014 * r3059014;
double r3059021 = r3059017 * r3059017;
double r3059022 = r3059020 + r3059021;
double r3059023 = r3059019 / r3059022;
return r3059023;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3059024 = 1.0;
double r3059025 = y_im;
double r3059026 = r3059025 * r3059025;
double r3059027 = y_re;
double r3059028 = r3059027 * r3059027;
double r3059029 = r3059026 + r3059028;
double r3059030 = sqrt(r3059029);
double r3059031 = x_im;
double r3059032 = r3059031 * r3059027;
double r3059033 = x_re;
double r3059034 = r3059033 * r3059025;
double r3059035 = r3059032 - r3059034;
double r3059036 = r3059030 / r3059035;
double r3059037 = r3059024 / r3059036;
double r3059038 = r3059037 / r3059030;
return r3059038;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.9
rmApplied add-sqr-sqrt25.9
Applied associate-/r*25.9
rmApplied clear-num25.9
Final simplification25.9
herbie shell --seed 2019200
(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))))