\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 - x.re \cdot y.im}{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 r46811 = x_im;
double r46812 = y_re;
double r46813 = r46811 * r46812;
double r46814 = x_re;
double r46815 = y_im;
double r46816 = r46814 * r46815;
double r46817 = r46813 - r46816;
double r46818 = r46812 * r46812;
double r46819 = r46815 * r46815;
double r46820 = r46818 + r46819;
double r46821 = r46817 / r46820;
return r46821;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r46822 = x_im;
double r46823 = y_re;
double r46824 = r46822 * r46823;
double r46825 = x_re;
double r46826 = y_im;
double r46827 = r46825 * r46826;
double r46828 = r46824 - r46827;
double r46829 = r46823 * r46823;
double r46830 = r46826 * r46826;
double r46831 = r46829 + r46830;
double r46832 = r46828 / r46831;
return r46832;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.5
rmApplied add-sqr-sqrt26.5
Applied associate-/r*26.4
Final simplification26.5
herbie shell --seed 2019297
(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))))