Average Error: 26.1 → 26.0
Time: 16.1s
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 r1703683 = x_re;
        double r1703684 = y_re;
        double r1703685 = r1703683 * r1703684;
        double r1703686 = x_im;
        double r1703687 = y_im;
        double r1703688 = r1703686 * r1703687;
        double r1703689 = r1703685 + r1703688;
        double r1703690 = r1703684 * r1703684;
        double r1703691 = r1703687 * r1703687;
        double r1703692 = r1703690 + r1703691;
        double r1703693 = r1703689 / r1703692;
        return r1703693;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1703694 = x_im;
        double r1703695 = y_im;
        double r1703696 = r1703694 * r1703695;
        double r1703697 = x_re;
        double r1703698 = y_re;
        double r1703699 = r1703697 * r1703698;
        double r1703700 = r1703696 + r1703699;
        double r1703701 = r1703698 * r1703698;
        double r1703702 = r1703695 * r1703695;
        double r1703703 = r1703701 + r1703702;
        double r1703704 = sqrt(r1703703);
        double r1703705 = r1703700 / r1703704;
        double r1703706 = r1703705 / r1703704;
        return r1703706;
}

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

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

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

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

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