Average Error: 25.3 → 25.2
Time: 14.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 r3095099 = x_re;
        double r3095100 = y_re;
        double r3095101 = r3095099 * r3095100;
        double r3095102 = x_im;
        double r3095103 = y_im;
        double r3095104 = r3095102 * r3095103;
        double r3095105 = r3095101 + r3095104;
        double r3095106 = r3095100 * r3095100;
        double r3095107 = r3095103 * r3095103;
        double r3095108 = r3095106 + r3095107;
        double r3095109 = r3095105 / r3095108;
        return r3095109;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3095110 = x_im;
        double r3095111 = y_im;
        double r3095112 = r3095110 * r3095111;
        double r3095113 = x_re;
        double r3095114 = y_re;
        double r3095115 = r3095113 * r3095114;
        double r3095116 = r3095112 + r3095115;
        double r3095117 = r3095114 * r3095114;
        double r3095118 = r3095111 * r3095111;
        double r3095119 = r3095117 + r3095118;
        double r3095120 = sqrt(r3095119);
        double r3095121 = r3095116 / r3095120;
        double r3095122 = r3095121 / r3095120;
        return r3095122;
}

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.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-sqrt25.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*25.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. Final simplification25.2

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