\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}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re}} - \frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{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 r55144 = x_im;
double r55145 = y_re;
double r55146 = r55144 * r55145;
double r55147 = x_re;
double r55148 = y_im;
double r55149 = r55147 * r55148;
double r55150 = r55146 - r55149;
double r55151 = r55145 * r55145;
double r55152 = r55148 * r55148;
double r55153 = r55151 + r55152;
double r55154 = r55150 / r55153;
return r55154;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r55155 = x_im;
double r55156 = y_re;
double r55157 = r55156 * r55156;
double r55158 = y_im;
double r55159 = r55158 * r55158;
double r55160 = r55157 + r55159;
double r55161 = sqrt(r55160);
double r55162 = r55161 / r55156;
double r55163 = r55155 / r55162;
double r55164 = x_re;
double r55165 = r55161 / r55158;
double r55166 = r55164 / r55165;
double r55167 = r55163 - r55166;
double r55168 = r55167 / r55161;
return r55168;
}



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 add-sqr-sqrt26.5
Applied associate-/r*26.4
rmApplied add-sqr-sqrt26.4
Applied sqrt-prod26.5
rmApplied div-sub26.5
Simplified24.7
Simplified22.8
Final simplification22.8
herbie shell --seed 2020064
(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))))