Average Error: 26.2 → 26.2
Time: 34.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{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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 r6682857 = x_re;
        double r6682858 = y_re;
        double r6682859 = r6682857 * r6682858;
        double r6682860 = x_im;
        double r6682861 = y_im;
        double r6682862 = r6682860 * r6682861;
        double r6682863 = r6682859 + r6682862;
        double r6682864 = r6682858 * r6682858;
        double r6682865 = r6682861 * r6682861;
        double r6682866 = r6682864 + r6682865;
        double r6682867 = r6682863 / r6682866;
        return r6682867;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r6682868 = 1.0;
        double r6682869 = y_re;
        double r6682870 = r6682869 * r6682869;
        double r6682871 = y_im;
        double r6682872 = r6682871 * r6682871;
        double r6682873 = r6682870 + r6682872;
        double r6682874 = sqrt(r6682873);
        double r6682875 = r6682868 / r6682874;
        double r6682876 = x_im;
        double r6682877 = r6682876 * r6682871;
        double r6682878 = x_re;
        double r6682879 = r6682878 * r6682869;
        double r6682880 = r6682877 + r6682879;
        double r6682881 = r6682875 * r6682880;
        double r6682882 = r6682881 / r6682874;
        return r6682882;
}

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

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

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

    \[\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. Using strategy rm
  6. Applied div-inv26.2

    \[\leadsto \frac{\color{blue}{\left(x.re \cdot y.re + x.im \cdot y.im\right) \cdot \frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Final simplification26.2

    \[\leadsto \frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]

Reproduce

herbie shell --seed 2019121 
(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))))