Average Error: 26.0 → 25.9
Time: 47.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{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{\frac{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r2869127 = x_re;
        double r2869128 = y_re;
        double r2869129 = r2869127 * r2869128;
        double r2869130 = x_im;
        double r2869131 = y_im;
        double r2869132 = r2869130 * r2869131;
        double r2869133 = r2869129 + r2869132;
        double r2869134 = r2869128 * r2869128;
        double r2869135 = r2869131 * r2869131;
        double r2869136 = r2869134 + r2869135;
        double r2869137 = r2869133 / r2869136;
        return r2869137;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2869138 = y_re;
        double r2869139 = x_re;
        double r2869140 = r2869138 * r2869139;
        double r2869141 = y_im;
        double r2869142 = x_im;
        double r2869143 = r2869141 * r2869142;
        double r2869144 = r2869140 + r2869143;
        double r2869145 = r2869141 * r2869141;
        double r2869146 = r2869138 * r2869138;
        double r2869147 = r2869145 + r2869146;
        double r2869148 = sqrt(r2869147);
        double r2869149 = r2869144 / r2869148;
        double r2869150 = r2869149 / r2869148;
        return r2869150;
}

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

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

    \[\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{y.re \cdot x.re + y.im \cdot x.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]

Reproduce

herbie shell --seed 2019200 
(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))))