Average Error: 26.3 → 26.3
Time: 3.3s
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 r64268 = x_re;
        double r64269 = y_re;
        double r64270 = r64268 * r64269;
        double r64271 = x_im;
        double r64272 = y_im;
        double r64273 = r64271 * r64272;
        double r64274 = r64270 + r64273;
        double r64275 = r64269 * r64269;
        double r64276 = r64272 * r64272;
        double r64277 = r64275 + r64276;
        double r64278 = r64274 / r64277;
        return r64278;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r64279 = x_re;
        double r64280 = y_re;
        double r64281 = r64279 * r64280;
        double r64282 = x_im;
        double r64283 = y_im;
        double r64284 = r64282 * r64283;
        double r64285 = r64281 + r64284;
        double r64286 = r64280 * r64280;
        double r64287 = r64283 * r64283;
        double r64288 = r64286 + r64287;
        double r64289 = sqrt(r64288);
        double r64290 = r64285 / r64289;
        double r64291 = r64290 / r64289;
        return r64291;
}

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

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

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

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

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