\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}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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 r2655417 = x_im;
double r2655418 = y_re;
double r2655419 = r2655417 * r2655418;
double r2655420 = x_re;
double r2655421 = y_im;
double r2655422 = r2655420 * r2655421;
double r2655423 = r2655419 - r2655422;
double r2655424 = r2655418 * r2655418;
double r2655425 = r2655421 * r2655421;
double r2655426 = r2655424 + r2655425;
double r2655427 = r2655423 / r2655426;
return r2655427;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2655428 = 1.0;
double r2655429 = y_re;
double r2655430 = r2655429 * r2655429;
double r2655431 = y_im;
double r2655432 = r2655431 * r2655431;
double r2655433 = r2655430 + r2655432;
double r2655434 = sqrt(r2655433);
double r2655435 = x_im;
double r2655436 = r2655429 * r2655435;
double r2655437 = x_re;
double r2655438 = r2655431 * r2655437;
double r2655439 = r2655436 - r2655438;
double r2655440 = r2655434 / r2655439;
double r2655441 = r2655428 / r2655440;
double r2655442 = r2655441 / r2655434;
return r2655442;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.5
rmApplied add-sqr-sqrt25.5
Applied associate-/r*25.5
rmApplied *-un-lft-identity25.5
Applied associate-/l*25.5
Final simplification25.5
herbie shell --seed 2019119
(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))))