Average Error: 25.6 → 25.5
Time: 11.3s
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 r1002563 = x_re;
        double r1002564 = y_re;
        double r1002565 = r1002563 * r1002564;
        double r1002566 = x_im;
        double r1002567 = y_im;
        double r1002568 = r1002566 * r1002567;
        double r1002569 = r1002565 + r1002568;
        double r1002570 = r1002564 * r1002564;
        double r1002571 = r1002567 * r1002567;
        double r1002572 = r1002570 + r1002571;
        double r1002573 = r1002569 / r1002572;
        return r1002573;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1002574 = x_im;
        double r1002575 = y_im;
        double r1002576 = r1002574 * r1002575;
        double r1002577 = x_re;
        double r1002578 = y_re;
        double r1002579 = r1002577 * r1002578;
        double r1002580 = r1002576 + r1002579;
        double r1002581 = r1002578 * r1002578;
        double r1002582 = r1002575 * r1002575;
        double r1002583 = r1002581 + r1002582;
        double r1002584 = sqrt(r1002583);
        double r1002585 = r1002580 / r1002584;
        double r1002586 = r1002585 / r1002584;
        return r1002586;
}

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 2019154 
(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))))