Average Error: 26.7 → 26.6
Time: 36.8s
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 r2891644 = x_re;
        double r2891645 = y_re;
        double r2891646 = r2891644 * r2891645;
        double r2891647 = x_im;
        double r2891648 = y_im;
        double r2891649 = r2891647 * r2891648;
        double r2891650 = r2891646 + r2891649;
        double r2891651 = r2891645 * r2891645;
        double r2891652 = r2891648 * r2891648;
        double r2891653 = r2891651 + r2891652;
        double r2891654 = r2891650 / r2891653;
        return r2891654;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2891655 = x_im;
        double r2891656 = y_im;
        double r2891657 = r2891655 * r2891656;
        double r2891658 = x_re;
        double r2891659 = y_re;
        double r2891660 = r2891658 * r2891659;
        double r2891661 = r2891657 + r2891660;
        double r2891662 = r2891659 * r2891659;
        double r2891663 = r2891656 * r2891656;
        double r2891664 = r2891662 + r2891663;
        double r2891665 = sqrt(r2891664);
        double r2891666 = r2891661 / r2891665;
        double r2891667 = r2891666 / r2891665;
        return r2891667;
}

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

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

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

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

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