\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{x.im \cdot \frac{y.re}{\sqrt{\mathsf{fma}\left(y.im, y.im, \left(y.re \cdot y.re\right)\right)}} - \frac{y.im}{\sqrt{\mathsf{fma}\left(y.im, y.im, \left(y.re \cdot y.re\right)\right)}} \cdot x.re}{\sqrt{\mathsf{fma}\left(y.im, y.im, \left(y.re \cdot y.re\right)\right)}}double f(double x_re, double x_im, double y_re, double y_im) {
double r1762921 = x_im;
double r1762922 = y_re;
double r1762923 = r1762921 * r1762922;
double r1762924 = x_re;
double r1762925 = y_im;
double r1762926 = r1762924 * r1762925;
double r1762927 = r1762923 - r1762926;
double r1762928 = r1762922 * r1762922;
double r1762929 = r1762925 * r1762925;
double r1762930 = r1762928 + r1762929;
double r1762931 = r1762927 / r1762930;
return r1762931;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1762932 = x_im;
double r1762933 = y_re;
double r1762934 = y_im;
double r1762935 = r1762933 * r1762933;
double r1762936 = fma(r1762934, r1762934, r1762935);
double r1762937 = sqrt(r1762936);
double r1762938 = r1762933 / r1762937;
double r1762939 = r1762932 * r1762938;
double r1762940 = r1762934 / r1762937;
double r1762941 = x_re;
double r1762942 = r1762940 * r1762941;
double r1762943 = r1762939 - r1762942;
double r1762944 = r1762943 / r1762937;
return r1762944;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Initial program 26.1
Simplified26.1
rmApplied add-sqr-sqrt26.1
Applied associate-/r*26.1
rmApplied div-sub26.1
rmApplied *-un-lft-identity26.1
Applied times-frac24.5
Simplified24.5
rmApplied *-un-lft-identity24.5
Applied sqrt-prod24.5
Applied times-frac22.8
Simplified22.8
Final simplification22.8
herbie shell --seed 2019133 +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))))