Average Error: 26.8 → 26.7
Time: 14.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.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 r6593272 = x_re;
        double r6593273 = y_re;
        double r6593274 = r6593272 * r6593273;
        double r6593275 = x_im;
        double r6593276 = y_im;
        double r6593277 = r6593275 * r6593276;
        double r6593278 = r6593274 + r6593277;
        double r6593279 = r6593273 * r6593273;
        double r6593280 = r6593276 * r6593276;
        double r6593281 = r6593279 + r6593280;
        double r6593282 = r6593278 / r6593281;
        return r6593282;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r6593283 = x_re;
        double r6593284 = y_re;
        double r6593285 = r6593283 * r6593284;
        double r6593286 = x_im;
        double r6593287 = y_im;
        double r6593288 = r6593286 * r6593287;
        double r6593289 = r6593285 + r6593288;
        double r6593290 = r6593284 * r6593284;
        double r6593291 = r6593287 * r6593287;
        double r6593292 = r6593290 + r6593291;
        double r6593293 = sqrt(r6593292);
        double r6593294 = r6593289 / r6593293;
        double r6593295 = r6593294 / r6593293;
        return r6593295;
}

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

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

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

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

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