Average Error: 25.9 → 25.8
Time: 15.7s
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 r2845505 = x_re;
        double r2845506 = y_re;
        double r2845507 = r2845505 * r2845506;
        double r2845508 = x_im;
        double r2845509 = y_im;
        double r2845510 = r2845508 * r2845509;
        double r2845511 = r2845507 + r2845510;
        double r2845512 = r2845506 * r2845506;
        double r2845513 = r2845509 * r2845509;
        double r2845514 = r2845512 + r2845513;
        double r2845515 = r2845511 / r2845514;
        return r2845515;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2845516 = x_im;
        double r2845517 = y_im;
        double r2845518 = r2845516 * r2845517;
        double r2845519 = x_re;
        double r2845520 = y_re;
        double r2845521 = r2845519 * r2845520;
        double r2845522 = r2845518 + r2845521;
        double r2845523 = r2845520 * r2845520;
        double r2845524 = r2845517 * r2845517;
        double r2845525 = r2845523 + r2845524;
        double r2845526 = sqrt(r2845525);
        double r2845527 = r2845522 / r2845526;
        double r2845528 = r2845527 / r2845526;
        return r2845528;
}

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 2019137 
(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))))