Average Error: 26.4 → 26.3
Time: 3.8s
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 r51173 = x_re;
        double r51174 = y_re;
        double r51175 = r51173 * r51174;
        double r51176 = x_im;
        double r51177 = y_im;
        double r51178 = r51176 * r51177;
        double r51179 = r51175 + r51178;
        double r51180 = r51174 * r51174;
        double r51181 = r51177 * r51177;
        double r51182 = r51180 + r51181;
        double r51183 = r51179 / r51182;
        return r51183;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r51184 = x_re;
        double r51185 = y_re;
        double r51186 = r51184 * r51185;
        double r51187 = x_im;
        double r51188 = y_im;
        double r51189 = r51187 * r51188;
        double r51190 = r51186 + r51189;
        double r51191 = r51185 * r51185;
        double r51192 = r51188 * r51188;
        double r51193 = r51191 + r51192;
        double r51194 = sqrt(r51193);
        double r51195 = r51190 / r51194;
        double r51196 = r51195 / r51194;
        return r51196;
}

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

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

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

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

    \[\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 2020020 
(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))))