Average Error: 26.3 → 26.2
Time: 11.1s
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 r2592510 = x_re;
        double r2592511 = y_re;
        double r2592512 = r2592510 * r2592511;
        double r2592513 = x_im;
        double r2592514 = y_im;
        double r2592515 = r2592513 * r2592514;
        double r2592516 = r2592512 + r2592515;
        double r2592517 = r2592511 * r2592511;
        double r2592518 = r2592514 * r2592514;
        double r2592519 = r2592517 + r2592518;
        double r2592520 = r2592516 / r2592519;
        return r2592520;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2592521 = y_re;
        double r2592522 = x_re;
        double r2592523 = r2592521 * r2592522;
        double r2592524 = y_im;
        double r2592525 = x_im;
        double r2592526 = r2592524 * r2592525;
        double r2592527 = r2592523 + r2592526;
        double r2592528 = r2592521 * r2592521;
        double r2592529 = r2592524 * r2592524;
        double r2592530 = r2592528 + r2592529;
        double r2592531 = sqrt(r2592530);
        double r2592532 = r2592527 / r2592531;
        double r2592533 = r2592532 / r2592531;
        return r2592533;
}

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

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

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

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

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

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