\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}double f(double x_re, double x_im, double y_re, double y_im) {
double r2965474 = x_im;
double r2965475 = y_re;
double r2965476 = r2965474 * r2965475;
double r2965477 = x_re;
double r2965478 = y_im;
double r2965479 = r2965477 * r2965478;
double r2965480 = r2965476 - r2965479;
double r2965481 = r2965475 * r2965475;
double r2965482 = r2965478 * r2965478;
double r2965483 = r2965481 + r2965482;
double r2965484 = r2965480 / r2965483;
return r2965484;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r2965485 = 1.0;
double r2965486 = y_re;
double r2965487 = r2965486 * r2965486;
double r2965488 = y_im;
double r2965489 = r2965488 * r2965488;
double r2965490 = r2965487 + r2965489;
double r2965491 = sqrt(r2965490);
double r2965492 = r2965485 / r2965491;
double r2965493 = x_im;
double r2965494 = r2965486 * r2965493;
double r2965495 = x_re;
double r2965496 = r2965488 * r2965495;
double r2965497 = r2965494 - r2965496;
double r2965498 = r2965491 / r2965497;
double r2965499 = r2965492 / r2965498;
return r2965499;
}



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 clear-num26.2
rmApplied *-un-lft-identity26.2
Applied add-sqr-sqrt26.2
Applied times-frac26.2
Applied associate-/r*26.1
Final simplification26.1
herbie shell --seed 2019179
(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))))