\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} - \frac{x.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{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 r39817 = x_im;
double r39818 = y_re;
double r39819 = r39817 * r39818;
double r39820 = x_re;
double r39821 = y_im;
double r39822 = r39820 * r39821;
double r39823 = r39819 - r39822;
double r39824 = r39818 * r39818;
double r39825 = r39821 * r39821;
double r39826 = r39824 + r39825;
double r39827 = r39823 / r39826;
return r39827;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r39828 = x_im;
double r39829 = y_re;
double r39830 = r39828 * r39829;
double r39831 = r39829 * r39829;
double r39832 = y_im;
double r39833 = r39832 * r39832;
double r39834 = r39831 + r39833;
double r39835 = r39830 / r39834;
double r39836 = x_re;
double r39837 = sqrt(r39834);
double r39838 = r39836 / r39837;
double r39839 = r39832 / r39837;
double r39840 = r39838 * r39839;
double r39841 = r39835 - r39840;
return r39841;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.2
rmApplied div-sub26.2
rmApplied add-sqr-sqrt26.2
Applied times-frac24.7
Final simplification24.7
herbie shell --seed 2019325
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
:precision binary64
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))