\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{y.re \cdot x.im - x.re \cdot y.im}{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 r3478356 = x_im;
double r3478357 = y_re;
double r3478358 = r3478356 * r3478357;
double r3478359 = x_re;
double r3478360 = y_im;
double r3478361 = r3478359 * r3478360;
double r3478362 = r3478358 - r3478361;
double r3478363 = r3478357 * r3478357;
double r3478364 = r3478360 * r3478360;
double r3478365 = r3478363 + r3478364;
double r3478366 = r3478362 / r3478365;
return r3478366;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r3478367 = y_re;
double r3478368 = x_im;
double r3478369 = r3478367 * r3478368;
double r3478370 = x_re;
double r3478371 = y_im;
double r3478372 = r3478370 * r3478371;
double r3478373 = r3478369 - r3478372;
double r3478374 = r3478367 * r3478367;
double r3478375 = r3478371 * r3478371;
double r3478376 = r3478374 + r3478375;
double r3478377 = r3478373 / r3478376;
return r3478377;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 26.5
rmApplied clear-num26.7
rmApplied *-un-lft-identity26.7
Applied *-un-lft-identity26.7
Applied times-frac26.7
Applied *-un-lft-identity26.7
Applied times-frac26.7
Simplified26.7
Simplified26.5
Final simplification26.5
herbie shell --seed 2019120
(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))))