Average Error: 25.9 → 25.9
Time: 15.2s
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 r59485 = x_re;
        double r59486 = y_re;
        double r59487 = r59485 * r59486;
        double r59488 = x_im;
        double r59489 = y_im;
        double r59490 = r59488 * r59489;
        double r59491 = r59487 + r59490;
        double r59492 = r59486 * r59486;
        double r59493 = r59489 * r59489;
        double r59494 = r59492 + r59493;
        double r59495 = r59491 / r59494;
        return r59495;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r59496 = x_re;
        double r59497 = y_re;
        double r59498 = r59496 * r59497;
        double r59499 = x_im;
        double r59500 = y_im;
        double r59501 = r59499 * r59500;
        double r59502 = r59498 + r59501;
        double r59503 = r59497 * r59497;
        double r59504 = r59500 * r59500;
        double r59505 = r59503 + r59504;
        double r59506 = sqrt(r59505);
        double r59507 = r59502 / r59506;
        double r59508 = r59507 / r59506;
        return r59508;
}

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 25.9

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

    \[\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*25.9

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

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