Average Error: 25.8 → 25.8
Time: 15.0s
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{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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 r2796464 = x_re;
        double r2796465 = y_re;
        double r2796466 = r2796464 * r2796465;
        double r2796467 = x_im;
        double r2796468 = y_im;
        double r2796469 = r2796467 * r2796468;
        double r2796470 = r2796466 + r2796469;
        double r2796471 = r2796465 * r2796465;
        double r2796472 = r2796468 * r2796468;
        double r2796473 = r2796471 + r2796472;
        double r2796474 = r2796470 / r2796473;
        return r2796474;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2796475 = 1.0;
        double r2796476 = y_re;
        double r2796477 = r2796476 * r2796476;
        double r2796478 = y_im;
        double r2796479 = r2796478 * r2796478;
        double r2796480 = r2796477 + r2796479;
        double r2796481 = sqrt(r2796480);
        double r2796482 = r2796475 / r2796481;
        double r2796483 = x_im;
        double r2796484 = r2796483 * r2796478;
        double r2796485 = x_re;
        double r2796486 = r2796485 * r2796476;
        double r2796487 = r2796484 + r2796486;
        double r2796488 = r2796482 * r2796487;
        double r2796489 = r2796488 / r2796481;
        return r2796489;
}

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.8

    \[\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.8

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

    \[\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. Using strategy rm
  6. Applied div-inv25.8

    \[\leadsto \frac{\color{blue}{\left(x.re \cdot y.re + x.im \cdot y.im\right) \cdot \frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Final simplification25.8

    \[\leadsto \frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]

Reproduce

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