Average Error: 25.9 → 25.8
Time: 13.7s
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 r106764 = x_re;
        double r106765 = y_re;
        double r106766 = r106764 * r106765;
        double r106767 = x_im;
        double r106768 = y_im;
        double r106769 = r106767 * r106768;
        double r106770 = r106766 + r106769;
        double r106771 = r106765 * r106765;
        double r106772 = r106768 * r106768;
        double r106773 = r106771 + r106772;
        double r106774 = r106770 / r106773;
        return r106774;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r106775 = x_re;
        double r106776 = y_re;
        double r106777 = r106775 * r106776;
        double r106778 = x_im;
        double r106779 = y_im;
        double r106780 = r106778 * r106779;
        double r106781 = r106777 + r106780;
        double r106782 = r106776 * r106776;
        double r106783 = r106779 * r106779;
        double r106784 = r106782 + r106783;
        double r106785 = sqrt(r106784);
        double r106786 = r106781 / r106785;
        double r106787 = r106786 / r106785;
        return r106787;
}

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. Final simplification25.8

    \[\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 2019325 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, real part"
  :precision binary64
  (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))