Average Error: 25.9 → 25.8
Time: 14.4s
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 r55222 = x_re;
        double r55223 = y_re;
        double r55224 = r55222 * r55223;
        double r55225 = x_im;
        double r55226 = y_im;
        double r55227 = r55225 * r55226;
        double r55228 = r55224 + r55227;
        double r55229 = r55223 * r55223;
        double r55230 = r55226 * r55226;
        double r55231 = r55229 + r55230;
        double r55232 = r55228 / r55231;
        return r55232;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r55233 = x_re;
        double r55234 = y_re;
        double r55235 = r55233 * r55234;
        double r55236 = x_im;
        double r55237 = y_im;
        double r55238 = r55236 * r55237;
        double r55239 = r55235 + r55238;
        double r55240 = r55234 * r55234;
        double r55241 = r55237 * r55237;
        double r55242 = r55240 + r55241;
        double r55243 = sqrt(r55242);
        double r55244 = r55239 / r55243;
        double r55245 = r55244 / r55243;
        return r55245;
}

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