Average Error: 26.8 → 26.7
Time: 38.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{y.re \cdot x.re + y.im \cdot x.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{y.re \cdot x.re + y.im \cdot x.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 r2965374 = x_re;
        double r2965375 = y_re;
        double r2965376 = r2965374 * r2965375;
        double r2965377 = x_im;
        double r2965378 = y_im;
        double r2965379 = r2965377 * r2965378;
        double r2965380 = r2965376 + r2965379;
        double r2965381 = r2965375 * r2965375;
        double r2965382 = r2965378 * r2965378;
        double r2965383 = r2965381 + r2965382;
        double r2965384 = r2965380 / r2965383;
        return r2965384;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2965385 = y_re;
        double r2965386 = x_re;
        double r2965387 = r2965385 * r2965386;
        double r2965388 = y_im;
        double r2965389 = x_im;
        double r2965390 = r2965388 * r2965389;
        double r2965391 = r2965387 + r2965390;
        double r2965392 = r2965385 * r2965385;
        double r2965393 = r2965388 * r2965388;
        double r2965394 = r2965392 + r2965393;
        double r2965395 = sqrt(r2965394);
        double r2965396 = r2965391 / r2965395;
        double r2965397 = r2965396 / r2965395;
        return r2965397;
}

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

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

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

    \[\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. Taylor expanded around inf 26.7

    \[\leadsto \frac{\frac{\color{blue}{y.im \cdot x.im + y.re \cdot x.re}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  6. Final simplification26.7

    \[\leadsto \frac{\frac{y.re \cdot x.re + y.im \cdot x.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 2019165 
(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))))