Average Error: 26.4 → 26.4
Time: 3.5s
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 r44859 = x_re;
        double r44860 = y_re;
        double r44861 = r44859 * r44860;
        double r44862 = x_im;
        double r44863 = y_im;
        double r44864 = r44862 * r44863;
        double r44865 = r44861 + r44864;
        double r44866 = r44860 * r44860;
        double r44867 = r44863 * r44863;
        double r44868 = r44866 + r44867;
        double r44869 = r44865 / r44868;
        return r44869;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r44870 = x_re;
        double r44871 = y_re;
        double r44872 = r44870 * r44871;
        double r44873 = x_im;
        double r44874 = y_im;
        double r44875 = r44873 * r44874;
        double r44876 = r44872 + r44875;
        double r44877 = r44871 * r44871;
        double r44878 = r44874 * r44874;
        double r44879 = r44877 + r44878;
        double r44880 = sqrt(r44879);
        double r44881 = r44876 / r44880;
        double r44882 = r44881 / r44880;
        return r44882;
}

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

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

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