\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 \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.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 r107502 = x_im;
double r107503 = y_re;
double r107504 = r107502 * r107503;
double r107505 = x_re;
double r107506 = y_im;
double r107507 = r107505 * r107506;
double r107508 = r107504 - r107507;
double r107509 = r107503 * r107503;
double r107510 = r107506 * r107506;
double r107511 = r107509 + r107510;
double r107512 = r107508 / r107511;
return r107512;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r107513 = x_im;
double r107514 = y_re;
double r107515 = r107514 * r107514;
double r107516 = y_im;
double r107517 = r107516 * r107516;
double r107518 = r107515 + r107517;
double r107519 = sqrt(r107518);
double r107520 = r107514 / r107519;
double r107521 = r107513 * r107520;
double r107522 = x_re;
double r107523 = r107516 / r107519;
double r107524 = r107522 * r107523;
double r107525 = r107521 - r107524;
double r107526 = r107525 / r107519;
return r107526;
}



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 add-sqr-sqrt26.3
Applied associate-/r*26.2
rmApplied div-sub26.2
rmApplied *-un-lft-identity26.2
Applied sqrt-prod26.2
Applied times-frac24.3
Simplified24.3
rmApplied *-un-lft-identity24.3
Applied sqrt-prod24.3
Applied times-frac22.2
Simplified22.2
Final simplification22.2
herbie shell --seed 2020033
(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))))