Average Error: 26.2 → 26.1
Time: 15.5s
Precision: 64
\[\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}}\]
\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 r4400322 = x_re;
        double r4400323 = y_re;
        double r4400324 = r4400322 * r4400323;
        double r4400325 = x_im;
        double r4400326 = y_im;
        double r4400327 = r4400325 * r4400326;
        double r4400328 = r4400324 + r4400327;
        double r4400329 = r4400323 * r4400323;
        double r4400330 = r4400326 * r4400326;
        double r4400331 = r4400329 + r4400330;
        double r4400332 = r4400328 / r4400331;
        return r4400332;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r4400333 = x_im;
        double r4400334 = y_im;
        double r4400335 = r4400333 * r4400334;
        double r4400336 = x_re;
        double r4400337 = y_re;
        double r4400338 = r4400336 * r4400337;
        double r4400339 = r4400335 + r4400338;
        double r4400340 = r4400337 * r4400337;
        double r4400341 = r4400334 * r4400334;
        double r4400342 = r4400340 + r4400341;
        double r4400343 = sqrt(r4400342);
        double r4400344 = r4400339 / r4400343;
        double r4400345 = r4400344 / r4400343;
        return r4400345;
}

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 26.2

    \[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt26.2

    \[\leadsto \frac{x.re \cdot y.re + x.im \cdot y.im}{\color{blue}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
  4. Applied associate-/r*26.1

    \[\leadsto \color{blue}{\frac{\frac{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
  5. Final simplification26.1

    \[\leadsto \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}}\]

Reproduce

herbie shell --seed 2019168 
(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))))