\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 r40539 = x_im;
double r40540 = y_re;
double r40541 = r40539 * r40540;
double r40542 = x_re;
double r40543 = y_im;
double r40544 = r40542 * r40543;
double r40545 = r40541 - r40544;
double r40546 = r40540 * r40540;
double r40547 = r40543 * r40543;
double r40548 = r40546 + r40547;
double r40549 = r40545 / r40548;
return r40549;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r40550 = 1.0;
double r40551 = y_re;
double r40552 = r40551 * r40551;
double r40553 = y_im;
double r40554 = r40553 * r40553;
double r40555 = r40552 + r40554;
double r40556 = sqrt(r40555);
double r40557 = x_im;
double r40558 = r40557 * r40551;
double r40559 = x_re;
double r40560 = r40559 * r40553;
double r40561 = r40558 - r40560;
double r40562 = r40556 / r40561;
double r40563 = r40550 / r40562;
double r40564 = r40563 / r40556;
return r40564;
}



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))))