\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot x.im - x.re \cdot \frac{y.im}{\sqrt{y.re \cdot y.re + y.im \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 r2472701 = x_im;
double r2472702 = y_re;
double r2472703 = r2472701 * r2472702;
double r2472704 = x_re;
double r2472705 = y_im;
double r2472706 = r2472704 * r2472705;
double r2472707 = r2472703 - r2472706;
double r2472708 = r2472702 * r2472702;
double r2472709 = r2472705 * r2472705;
double r2472710 = r2472708 + r2472709;
double r2472711 = r2472707 / r2472710;
return r2472711;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2472712 = y_re;
double r2472713 = r2472712 * r2472712;
double r2472714 = y_im;
double r2472715 = r2472714 * r2472714;
double r2472716 = r2472713 + r2472715;
double r2472717 = sqrt(r2472716);
double r2472718 = r2472712 / r2472717;
double r2472719 = x_im;
double r2472720 = r2472718 * r2472719;
double r2472721 = x_re;
double r2472722 = r2472714 / r2472717;
double r2472723 = r2472721 * r2472722;
double r2472724 = r2472720 - r2472723;
double r2472725 = r2472724 / r2472717;
return r2472725;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.1
rmApplied add-sqr-sqrt26.1
Applied associate-/r*26.1
rmApplied div-sub26.1
rmApplied *-un-lft-identity26.1
Applied sqrt-prod26.1
Applied times-frac24.5
Simplified24.5
rmApplied *-un-lft-identity24.5
Applied sqrt-prod24.5
Applied times-frac22.8
Simplified22.8
Final simplification22.8
herbie shell --seed 2019133
(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))))