Average Error: 25.9 → 25.8
Time: 13.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 r55479 = x_re;
        double r55480 = y_re;
        double r55481 = r55479 * r55480;
        double r55482 = x_im;
        double r55483 = y_im;
        double r55484 = r55482 * r55483;
        double r55485 = r55481 + r55484;
        double r55486 = r55480 * r55480;
        double r55487 = r55483 * r55483;
        double r55488 = r55486 + r55487;
        double r55489 = r55485 / r55488;
        return r55489;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r55490 = x_re;
        double r55491 = y_re;
        double r55492 = r55490 * r55491;
        double r55493 = x_im;
        double r55494 = y_im;
        double r55495 = r55493 * r55494;
        double r55496 = r55492 + r55495;
        double r55497 = r55491 * r55491;
        double r55498 = r55494 * r55494;
        double r55499 = r55497 + r55498;
        double r55500 = sqrt(r55499);
        double r55501 = r55496 / r55500;
        double r55502 = r55501 / r55500;
        return r55502;
}

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