Average Error: 25.9 → 25.9
Time: 4.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.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 r68088 = x_re;
        double r68089 = y_re;
        double r68090 = r68088 * r68089;
        double r68091 = x_im;
        double r68092 = y_im;
        double r68093 = r68091 * r68092;
        double r68094 = r68090 + r68093;
        double r68095 = r68089 * r68089;
        double r68096 = r68092 * r68092;
        double r68097 = r68095 + r68096;
        double r68098 = r68094 / r68097;
        return r68098;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r68099 = x_re;
        double r68100 = y_re;
        double r68101 = r68099 * r68100;
        double r68102 = x_im;
        double r68103 = y_im;
        double r68104 = r68102 * r68103;
        double r68105 = r68101 + r68104;
        double r68106 = r68100 * r68100;
        double r68107 = r68103 * r68103;
        double r68108 = r68106 + r68107;
        double r68109 = sqrt(r68108);
        double r68110 = r68105 / r68109;
        double r68111 = r68110 / r68109;
        return r68111;
}

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.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{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 2019318 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, real part"
  :precision binary64
  (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))