Average Error: 26.2 → 26.1
Time: 11.4s
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 r1346533 = x_re;
        double r1346534 = y_re;
        double r1346535 = r1346533 * r1346534;
        double r1346536 = x_im;
        double r1346537 = y_im;
        double r1346538 = r1346536 * r1346537;
        double r1346539 = r1346535 + r1346538;
        double r1346540 = r1346534 * r1346534;
        double r1346541 = r1346537 * r1346537;
        double r1346542 = r1346540 + r1346541;
        double r1346543 = r1346539 / r1346542;
        return r1346543;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1346544 = x_im;
        double r1346545 = y_im;
        double r1346546 = r1346544 * r1346545;
        double r1346547 = x_re;
        double r1346548 = y_re;
        double r1346549 = r1346547 * r1346548;
        double r1346550 = r1346546 + r1346549;
        double r1346551 = r1346548 * r1346548;
        double r1346552 = r1346545 * r1346545;
        double r1346553 = r1346551 + r1346552;
        double r1346554 = sqrt(r1346553);
        double r1346555 = r1346550 / r1346554;
        double r1346556 = r1346555 / r1346554;
        return r1346556;
}

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