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 r47289 = x_re;
        double r47290 = y_re;
        double r47291 = r47289 * r47290;
        double r47292 = x_im;
        double r47293 = y_im;
        double r47294 = r47292 * r47293;
        double r47295 = r47291 + r47294;
        double r47296 = r47290 * r47290;
        double r47297 = r47293 * r47293;
        double r47298 = r47296 + r47297;
        double r47299 = r47295 / r47298;
        return r47299;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r47300 = x_re;
        double r47301 = y_re;
        double r47302 = r47300 * r47301;
        double r47303 = x_im;
        double r47304 = y_im;
        double r47305 = r47303 * r47304;
        double r47306 = r47302 + r47305;
        double r47307 = r47301 * r47301;
        double r47308 = r47304 * r47304;
        double r47309 = r47307 + r47308;
        double r47310 = sqrt(r47309);
        double r47311 = r47306 / r47310;
        double r47312 = r47311 / r47310;
        return r47312;
}

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