Average Error: 26.7 → 26.6
Time: 4.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.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 r55128 = x_re;
        double r55129 = y_re;
        double r55130 = r55128 * r55129;
        double r55131 = x_im;
        double r55132 = y_im;
        double r55133 = r55131 * r55132;
        double r55134 = r55130 + r55133;
        double r55135 = r55129 * r55129;
        double r55136 = r55132 * r55132;
        double r55137 = r55135 + r55136;
        double r55138 = r55134 / r55137;
        return r55138;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r55139 = x_re;
        double r55140 = y_re;
        double r55141 = r55139 * r55140;
        double r55142 = x_im;
        double r55143 = y_im;
        double r55144 = r55142 * r55143;
        double r55145 = r55141 + r55144;
        double r55146 = r55140 * r55140;
        double r55147 = r55143 * r55143;
        double r55148 = r55146 + r55147;
        double r55149 = sqrt(r55148);
        double r55150 = r55145 / r55149;
        double r55151 = r55150 / r55149;
        return r55151;
}

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.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-sqrt26.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*26.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 simplification26.6

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