Average Error: 25.6 → 25.5
Time: 16.8s
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 r3006374 = x_re;
        double r3006375 = y_re;
        double r3006376 = r3006374 * r3006375;
        double r3006377 = x_im;
        double r3006378 = y_im;
        double r3006379 = r3006377 * r3006378;
        double r3006380 = r3006376 + r3006379;
        double r3006381 = r3006375 * r3006375;
        double r3006382 = r3006378 * r3006378;
        double r3006383 = r3006381 + r3006382;
        double r3006384 = r3006380 / r3006383;
        return r3006384;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3006385 = x_im;
        double r3006386 = y_im;
        double r3006387 = r3006385 * r3006386;
        double r3006388 = x_re;
        double r3006389 = y_re;
        double r3006390 = r3006388 * r3006389;
        double r3006391 = r3006387 + r3006390;
        double r3006392 = r3006389 * r3006389;
        double r3006393 = r3006386 * r3006386;
        double r3006394 = r3006392 + r3006393;
        double r3006395 = sqrt(r3006394);
        double r3006396 = r3006391 / r3006395;
        double r3006397 = r3006396 / r3006395;
        return r3006397;
}

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 25.6

    \[\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-sqrt25.6

    \[\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*25.5

    \[\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 simplification25.5

    \[\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 2019164 
(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))))