Average Error: 26.4 → 26.3
Time: 3.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.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 r47299 = x_re;
        double r47300 = y_re;
        double r47301 = r47299 * r47300;
        double r47302 = x_im;
        double r47303 = y_im;
        double r47304 = r47302 * r47303;
        double r47305 = r47301 + r47304;
        double r47306 = r47300 * r47300;
        double r47307 = r47303 * r47303;
        double r47308 = r47306 + r47307;
        double r47309 = r47305 / r47308;
        return r47309;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r47310 = x_re;
        double r47311 = y_re;
        double r47312 = r47310 * r47311;
        double r47313 = x_im;
        double r47314 = y_im;
        double r47315 = r47313 * r47314;
        double r47316 = r47312 + r47315;
        double r47317 = r47311 * r47311;
        double r47318 = r47314 * r47314;
        double r47319 = r47317 + r47318;
        double r47320 = sqrt(r47319);
        double r47321 = r47316 / r47320;
        double r47322 = r47321 / r47320;
        return r47322;
}

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

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

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