Average Error: 26.5 → 26.4
Time: 3.7s
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 r114249 = x_re;
        double r114250 = y_re;
        double r114251 = r114249 * r114250;
        double r114252 = x_im;
        double r114253 = y_im;
        double r114254 = r114252 * r114253;
        double r114255 = r114251 + r114254;
        double r114256 = r114250 * r114250;
        double r114257 = r114253 * r114253;
        double r114258 = r114256 + r114257;
        double r114259 = r114255 / r114258;
        return r114259;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r114260 = x_re;
        double r114261 = y_re;
        double r114262 = r114260 * r114261;
        double r114263 = x_im;
        double r114264 = y_im;
        double r114265 = r114263 * r114264;
        double r114266 = r114262 + r114265;
        double r114267 = r114261 * r114261;
        double r114268 = r114264 * r114264;
        double r114269 = r114267 + r114268;
        double r114270 = sqrt(r114269);
        double r114271 = r114266 / r114270;
        double r114272 = r114271 / r114270;
        return r114272;
}

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

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

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