Average Error: 26.4 → 26.3
Time: 3.1s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{\frac{x.im \cdot y.re - x.re \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.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{\frac{x.im \cdot y.re - x.re \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 r64593 = x_im;
        double r64594 = y_re;
        double r64595 = r64593 * r64594;
        double r64596 = x_re;
        double r64597 = y_im;
        double r64598 = r64596 * r64597;
        double r64599 = r64595 - r64598;
        double r64600 = r64594 * r64594;
        double r64601 = r64597 * r64597;
        double r64602 = r64600 + r64601;
        double r64603 = r64599 / r64602;
        return r64603;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r64604 = x_im;
        double r64605 = y_re;
        double r64606 = r64604 * r64605;
        double r64607 = x_re;
        double r64608 = y_im;
        double r64609 = r64607 * r64608;
        double r64610 = r64606 - r64609;
        double r64611 = r64605 * r64605;
        double r64612 = r64608 * r64608;
        double r64613 = r64611 + r64612;
        double r64614 = sqrt(r64613);
        double r64615 = r64610 / r64614;
        double r64616 = r64615 / r64614;
        return r64616;
}

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

    \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt26.4

    \[\leadsto \frac{x.im \cdot y.re - x.re \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.im \cdot y.re - x.re \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.im \cdot y.re - x.re \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 2020056 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  :precision binary64
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))