\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.re \cdot y.re + y.im \cdot y.im}}{x.im \cdot y.re - x.re \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 r44296 = x_im;
double r44297 = y_re;
double r44298 = r44296 * r44297;
double r44299 = x_re;
double r44300 = y_im;
double r44301 = r44299 * r44300;
double r44302 = r44298 - r44301;
double r44303 = r44297 * r44297;
double r44304 = r44300 * r44300;
double r44305 = r44303 + r44304;
double r44306 = r44302 / r44305;
return r44306;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r44307 = 1.0;
double r44308 = y_re;
double r44309 = r44308 * r44308;
double r44310 = y_im;
double r44311 = r44310 * r44310;
double r44312 = r44309 + r44311;
double r44313 = sqrt(r44312);
double r44314 = x_im;
double r44315 = r44314 * r44308;
double r44316 = x_re;
double r44317 = r44316 * r44310;
double r44318 = r44315 - r44317;
double r44319 = r44313 / r44318;
double r44320 = r44307 / r44319;
double r44321 = r44320 / r44313;
return r44321;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



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