Average Error: 26.1 → 26.0
Time: 13.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{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 r2866063 = x_re;
        double r2866064 = y_re;
        double r2866065 = r2866063 * r2866064;
        double r2866066 = x_im;
        double r2866067 = y_im;
        double r2866068 = r2866066 * r2866067;
        double r2866069 = r2866065 + r2866068;
        double r2866070 = r2866064 * r2866064;
        double r2866071 = r2866067 * r2866067;
        double r2866072 = r2866070 + r2866071;
        double r2866073 = r2866069 / r2866072;
        return r2866073;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2866074 = x_im;
        double r2866075 = y_im;
        double r2866076 = r2866074 * r2866075;
        double r2866077 = x_re;
        double r2866078 = y_re;
        double r2866079 = r2866077 * r2866078;
        double r2866080 = r2866076 + r2866079;
        double r2866081 = r2866078 * r2866078;
        double r2866082 = r2866075 * r2866075;
        double r2866083 = r2866081 + r2866082;
        double r2866084 = sqrt(r2866083);
        double r2866085 = r2866080 / r2866084;
        double r2866086 = r2866085 / r2866084;
        return r2866086;
}

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

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

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

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

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