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 r78489 = x_re;
        double r78490 = y_re;
        double r78491 = r78489 * r78490;
        double r78492 = x_im;
        double r78493 = y_im;
        double r78494 = r78492 * r78493;
        double r78495 = r78491 + r78494;
        double r78496 = r78490 * r78490;
        double r78497 = r78493 * r78493;
        double r78498 = r78496 + r78497;
        double r78499 = r78495 / r78498;
        return r78499;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r78500 = x_re;
        double r78501 = y_re;
        double r78502 = r78500 * r78501;
        double r78503 = x_im;
        double r78504 = y_im;
        double r78505 = r78503 * r78504;
        double r78506 = r78502 + r78505;
        double r78507 = r78501 * r78501;
        double r78508 = r78504 * r78504;
        double r78509 = r78507 + r78508;
        double r78510 = sqrt(r78509);
        double r78511 = r78506 / r78510;
        double r78512 = r78511 / r78510;
        return r78512;
}

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