Average Error: 25.9 → 25.9
Time: 14.1s
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}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.re}}}{\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}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.re}}}{\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 r43439 = x_re;
        double r43440 = y_re;
        double r43441 = r43439 * r43440;
        double r43442 = x_im;
        double r43443 = y_im;
        double r43444 = r43442 * r43443;
        double r43445 = r43441 + r43444;
        double r43446 = r43440 * r43440;
        double r43447 = r43443 * r43443;
        double r43448 = r43446 + r43447;
        double r43449 = r43445 / r43448;
        return r43449;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r43450 = 1.0;
        double r43451 = y_re;
        double r43452 = r43451 * r43451;
        double r43453 = y_im;
        double r43454 = r43453 * r43453;
        double r43455 = r43452 + r43454;
        double r43456 = sqrt(r43455);
        double r43457 = x_im;
        double r43458 = r43453 * r43457;
        double r43459 = x_re;
        double r43460 = r43451 * r43459;
        double r43461 = r43458 + r43460;
        double r43462 = r43456 / r43461;
        double r43463 = r43450 / r43462;
        double r43464 = r43463 / r43456;
        return r43464;
}

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

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

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

    \[\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 clear-num25.9

    \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.re \cdot y.re + x.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Simplified25.9

    \[\leadsto \frac{\frac{1}{\color{blue}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im \cdot x.im + y.re \cdot x.re}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  8. Final simplification25.9

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

Reproduce

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