Average Error: 26.8 → 26.7
Time: 11.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 r47056 = x_re;
        double r47057 = y_re;
        double r47058 = r47056 * r47057;
        double r47059 = x_im;
        double r47060 = y_im;
        double r47061 = r47059 * r47060;
        double r47062 = r47058 + r47061;
        double r47063 = r47057 * r47057;
        double r47064 = r47060 * r47060;
        double r47065 = r47063 + r47064;
        double r47066 = r47062 / r47065;
        return r47066;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r47067 = x_re;
        double r47068 = y_re;
        double r47069 = r47067 * r47068;
        double r47070 = x_im;
        double r47071 = y_im;
        double r47072 = r47070 * r47071;
        double r47073 = r47069 + r47072;
        double r47074 = r47068 * r47068;
        double r47075 = r47071 * r47071;
        double r47076 = r47074 + r47075;
        double r47077 = sqrt(r47076);
        double r47078 = r47073 / r47077;
        double r47079 = r47078 / r47077;
        return r47079;
}

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

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

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

    \[\leadsto \frac{\color{blue}{\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}}\]
  6. Final simplification26.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 2019174 
(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))))