\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{-x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im} + \frac{x.im \cdot y.re}{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 r38371 = x_im;
double r38372 = y_re;
double r38373 = r38371 * r38372;
double r38374 = x_re;
double r38375 = y_im;
double r38376 = r38374 * r38375;
double r38377 = r38373 - r38376;
double r38378 = r38372 * r38372;
double r38379 = r38375 * r38375;
double r38380 = r38378 + r38379;
double r38381 = r38377 / r38380;
return r38381;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r38382 = x_re;
double r38383 = y_im;
double r38384 = r38382 * r38383;
double r38385 = -r38384;
double r38386 = y_re;
double r38387 = r38386 * r38386;
double r38388 = r38383 * r38383;
double r38389 = r38387 + r38388;
double r38390 = r38385 / r38389;
double r38391 = x_im;
double r38392 = r38391 * r38386;
double r38393 = r38392 / r38389;
double r38394 = r38390 + r38393;
return r38394;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.8
rmApplied add-sqr-sqrt25.8
Applied associate-/r*25.7
rmApplied div-sub25.7
rmApplied add-sqr-sqrt25.7
Applied sqrt-prod25.8
Applied times-frac24.1
rmApplied add-sqr-sqrt24.1
Applied sqrt-prod24.3
Final simplification25.8
herbie shell --seed 2019303
(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))))