\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{\mathsf{fma}\left(y.im, y.im, y.re \cdot y.re\right)}}}{\sqrt{\mathsf{fma}\left(y.im, y.im, y.re \cdot y.re\right)}}double f(double x_re, double x_im, double y_re, double y_im) {
double r969194 = x_im;
double r969195 = y_re;
double r969196 = r969194 * r969195;
double r969197 = x_re;
double r969198 = y_im;
double r969199 = r969197 * r969198;
double r969200 = r969196 - r969199;
double r969201 = r969195 * r969195;
double r969202 = r969198 * r969198;
double r969203 = r969201 + r969202;
double r969204 = r969200 / r969203;
return r969204;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r969205 = x_im;
double r969206 = y_re;
double r969207 = r969205 * r969206;
double r969208 = x_re;
double r969209 = y_im;
double r969210 = r969208 * r969209;
double r969211 = r969207 - r969210;
double r969212 = r969206 * r969206;
double r969213 = fma(r969209, r969209, r969212);
double r969214 = sqrt(r969213);
double r969215 = r969211 / r969214;
double r969216 = r969215 / r969214;
return r969216;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 25.4
Simplified25.4
rmApplied add-sqr-sqrt25.4
Applied associate-/r*25.3
Final simplification25.3
herbie shell --seed 2019154 +o rules:numerics
(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))))