Average Error: 25.7 → 25.7
Time: 21.9s
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.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}}\]
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\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}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r2538711 = x_re;
        double r2538712 = y_re;
        double r2538713 = r2538711 * r2538712;
        double r2538714 = x_im;
        double r2538715 = y_im;
        double r2538716 = r2538714 * r2538715;
        double r2538717 = r2538713 + r2538716;
        double r2538718 = r2538712 * r2538712;
        double r2538719 = r2538715 * r2538715;
        double r2538720 = r2538718 + r2538719;
        double r2538721 = r2538717 / r2538720;
        return r2538721;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2538722 = x_re;
        double r2538723 = y_re;
        double r2538724 = r2538722 * r2538723;
        double r2538725 = x_im;
        double r2538726 = y_im;
        double r2538727 = r2538725 * r2538726;
        double r2538728 = r2538724 + r2538727;
        double r2538729 = r2538723 * r2538723;
        double r2538730 = r2538726 * r2538726;
        double r2538731 = r2538729 + r2538730;
        double r2538732 = sqrt(r2538731);
        double r2538733 = r2538728 / r2538732;
        double r2538734 = r2538733 / r2538732;
        return r2538734;
}

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

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

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

    \[\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. Using strategy rm
  8. Applied associate-*r/25.7

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

    \[\leadsto \frac{\frac{\color{blue}{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}}\]
  10. Final simplification25.7

    \[\leadsto \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}}\]

Reproduce

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