Average Error: 25.9 → 25.8
Time: 18.0s
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 r2162777 = x_re;
        double r2162778 = y_re;
        double r2162779 = r2162777 * r2162778;
        double r2162780 = x_im;
        double r2162781 = y_im;
        double r2162782 = r2162780 * r2162781;
        double r2162783 = r2162779 + r2162782;
        double r2162784 = r2162778 * r2162778;
        double r2162785 = r2162781 * r2162781;
        double r2162786 = r2162784 + r2162785;
        double r2162787 = r2162783 / r2162786;
        return r2162787;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2162788 = x_im;
        double r2162789 = y_im;
        double r2162790 = r2162788 * r2162789;
        double r2162791 = x_re;
        double r2162792 = y_re;
        double r2162793 = r2162791 * r2162792;
        double r2162794 = r2162790 + r2162793;
        double r2162795 = r2162792 * r2162792;
        double r2162796 = r2162789 * r2162789;
        double r2162797 = r2162795 + r2162796;
        double r2162798 = sqrt(r2162797);
        double r2162799 = r2162794 / r2162798;
        double r2162800 = r2162799 / r2162798;
        return r2162800;
}

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

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

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