\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.re - x.re \cdot 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 r4916469 = x_im;
double r4916470 = y_re;
double r4916471 = r4916469 * r4916470;
double r4916472 = x_re;
double r4916473 = y_im;
double r4916474 = r4916472 * r4916473;
double r4916475 = r4916471 - r4916474;
double r4916476 = r4916470 * r4916470;
double r4916477 = r4916473 * r4916473;
double r4916478 = r4916476 + r4916477;
double r4916479 = r4916475 / r4916478;
return r4916479;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r4916480 = x_im;
double r4916481 = y_re;
double r4916482 = r4916480 * r4916481;
double r4916483 = x_re;
double r4916484 = y_im;
double r4916485 = r4916483 * r4916484;
double r4916486 = r4916482 - r4916485;
double r4916487 = r4916481 * r4916481;
double r4916488 = r4916484 * r4916484;
double r4916489 = r4916487 + r4916488;
double r4916490 = sqrt(r4916489);
double r4916491 = r4916486 / r4916490;
double r4916492 = r4916491 / r4916490;
return r4916492;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.4
rmApplied add-sqr-sqrt26.4
Applied associate-/r*26.3
Final simplification26.3
herbie shell --seed 2019174
(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))))