Average Error: 25.7 → 25.6
Time: 14.9s
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 r2537109 = x_re;
        double r2537110 = y_re;
        double r2537111 = r2537109 * r2537110;
        double r2537112 = x_im;
        double r2537113 = y_im;
        double r2537114 = r2537112 * r2537113;
        double r2537115 = r2537111 + r2537114;
        double r2537116 = r2537110 * r2537110;
        double r2537117 = r2537113 * r2537113;
        double r2537118 = r2537116 + r2537117;
        double r2537119 = r2537115 / r2537118;
        return r2537119;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2537120 = x_im;
        double r2537121 = y_im;
        double r2537122 = r2537120 * r2537121;
        double r2537123 = x_re;
        double r2537124 = y_re;
        double r2537125 = r2537123 * r2537124;
        double r2537126 = r2537122 + r2537125;
        double r2537127 = r2537124 * r2537124;
        double r2537128 = r2537121 * r2537121;
        double r2537129 = r2537127 + r2537128;
        double r2537130 = sqrt(r2537129);
        double r2537131 = r2537126 / r2537130;
        double r2537132 = r2537131 / r2537130;
        return r2537132;
}

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

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

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

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

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