Average Error: 26.8 → 26.7
Time: 12.6s
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.im \cdot y.im + x.re \cdot y.re}{\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.im \cdot y.im + x.re \cdot y.re}{\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 r3311446 = x_re;
        double r3311447 = y_re;
        double r3311448 = r3311446 * r3311447;
        double r3311449 = x_im;
        double r3311450 = y_im;
        double r3311451 = r3311449 * r3311450;
        double r3311452 = r3311448 + r3311451;
        double r3311453 = r3311447 * r3311447;
        double r3311454 = r3311450 * r3311450;
        double r3311455 = r3311453 + r3311454;
        double r3311456 = r3311452 / r3311455;
        return r3311456;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3311457 = x_im;
        double r3311458 = y_im;
        double r3311459 = r3311457 * r3311458;
        double r3311460 = x_re;
        double r3311461 = y_re;
        double r3311462 = r3311460 * r3311461;
        double r3311463 = r3311459 + r3311462;
        double r3311464 = r3311461 * r3311461;
        double r3311465 = r3311458 * r3311458;
        double r3311466 = r3311464 + r3311465;
        double r3311467 = sqrt(r3311466);
        double r3311468 = r3311463 / r3311467;
        double r3311469 = r3311468 / r3311467;
        return r3311469;
}

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. Final simplification26.7

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