Average Error: 25.3 → 25.2
Time: 15.6s
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 r3391852 = x_re;
        double r3391853 = y_re;
        double r3391854 = r3391852 * r3391853;
        double r3391855 = x_im;
        double r3391856 = y_im;
        double r3391857 = r3391855 * r3391856;
        double r3391858 = r3391854 + r3391857;
        double r3391859 = r3391853 * r3391853;
        double r3391860 = r3391856 * r3391856;
        double r3391861 = r3391859 + r3391860;
        double r3391862 = r3391858 / r3391861;
        return r3391862;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3391863 = x_im;
        double r3391864 = y_im;
        double r3391865 = r3391863 * r3391864;
        double r3391866 = x_re;
        double r3391867 = y_re;
        double r3391868 = r3391866 * r3391867;
        double r3391869 = r3391865 + r3391868;
        double r3391870 = r3391867 * r3391867;
        double r3391871 = r3391864 * r3391864;
        double r3391872 = r3391870 + r3391871;
        double r3391873 = sqrt(r3391872);
        double r3391874 = r3391869 / r3391873;
        double r3391875 = r3391874 / r3391873;
        return r3391875;
}

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

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

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

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

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