Average Error: 26.1 → 26.0
Time: 31.2s
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 r6006452 = x_re;
        double r6006453 = y_re;
        double r6006454 = r6006452 * r6006453;
        double r6006455 = x_im;
        double r6006456 = y_im;
        double r6006457 = r6006455 * r6006456;
        double r6006458 = r6006454 + r6006457;
        double r6006459 = r6006453 * r6006453;
        double r6006460 = r6006456 * r6006456;
        double r6006461 = r6006459 + r6006460;
        double r6006462 = r6006458 / r6006461;
        return r6006462;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r6006463 = x_im;
        double r6006464 = y_im;
        double r6006465 = r6006463 * r6006464;
        double r6006466 = x_re;
        double r6006467 = y_re;
        double r6006468 = r6006466 * r6006467;
        double r6006469 = r6006465 + r6006468;
        double r6006470 = r6006467 * r6006467;
        double r6006471 = r6006464 * r6006464;
        double r6006472 = r6006470 + r6006471;
        double r6006473 = sqrt(r6006472);
        double r6006474 = r6006469 / r6006473;
        double r6006475 = r6006474 / r6006473;
        return r6006475;
}

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

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

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

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

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