\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\frac{\frac{x.im \cdot y.im + x.re \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot 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 r1334139 = x_re;
double r1334140 = y_re;
double r1334141 = r1334139 * r1334140;
double r1334142 = x_im;
double r1334143 = y_im;
double r1334144 = r1334142 * r1334143;
double r1334145 = r1334141 + r1334144;
double r1334146 = r1334140 * r1334140;
double r1334147 = r1334143 * r1334143;
double r1334148 = r1334146 + r1334147;
double r1334149 = r1334145 / r1334148;
return r1334149;
}
double f(double x_re, double x_im, double y_re, double y_im) {
double r1334150 = x_im;
double r1334151 = y_im;
double r1334152 = r1334150 * r1334151;
double r1334153 = x_re;
double r1334154 = y_re;
double r1334155 = r1334153 * r1334154;
double r1334156 = r1334152 + r1334155;
double r1334157 = r1334154 * r1334154;
double r1334158 = r1334151 * r1334151;
double r1334159 = r1334157 + r1334158;
double r1334160 = sqrt(r1334159);
double r1334161 = r1334156 / r1334160;
double r1334162 = r1334161 / r1334160;
return r1334162;
}



Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
Initial program 25.6
rmApplied add-sqr-sqrt25.6
Applied associate-/r*25.6
Final simplification25.6
herbie shell --seed 2019156
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))