\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 r1306456 = x_im;
double r1306457 = y_re;
double r1306458 = r1306456 * r1306457;
double r1306459 = x_re;
double r1306460 = y_im;
double r1306461 = r1306459 * r1306460;
double r1306462 = r1306458 - r1306461;
double r1306463 = r1306457 * r1306457;
double r1306464 = r1306460 * r1306460;
double r1306465 = r1306463 + r1306464;
double r1306466 = r1306462 / r1306465;
return r1306466;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1306467 = 1.0;
double r1306468 = y_re;
double r1306469 = r1306468 * r1306468;
double r1306470 = y_im;
double r1306471 = r1306470 * r1306470;
double r1306472 = r1306469 + r1306471;
double r1306473 = sqrt(r1306472);
double r1306474 = x_im;
double r1306475 = r1306468 * r1306474;
double r1306476 = x_re;
double r1306477 = r1306470 * r1306476;
double r1306478 = r1306475 - r1306477;
double r1306479 = r1306473 / r1306478;
double r1306480 = r1306467 / r1306479;
double r1306481 = r1306480 / r1306473;
return r1306481;
}



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