Average Error: 25.9 → 25.8
Time: 13.0s
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 r1327023 = x_re;
        double r1327024 = y_re;
        double r1327025 = r1327023 * r1327024;
        double r1327026 = x_im;
        double r1327027 = y_im;
        double r1327028 = r1327026 * r1327027;
        double r1327029 = r1327025 + r1327028;
        double r1327030 = r1327024 * r1327024;
        double r1327031 = r1327027 * r1327027;
        double r1327032 = r1327030 + r1327031;
        double r1327033 = r1327029 / r1327032;
        return r1327033;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1327034 = x_im;
        double r1327035 = y_im;
        double r1327036 = r1327034 * r1327035;
        double r1327037 = x_re;
        double r1327038 = y_re;
        double r1327039 = r1327037 * r1327038;
        double r1327040 = r1327036 + r1327039;
        double r1327041 = r1327038 * r1327038;
        double r1327042 = r1327035 * r1327035;
        double r1327043 = r1327041 + r1327042;
        double r1327044 = sqrt(r1327043);
        double r1327045 = r1327040 / r1327044;
        double r1327046 = r1327045 / r1327044;
        return r1327046;
}

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.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 2019151 
(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))))