Average Error: 26.4 → 26.3
Time: 3.2s
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 r78728 = x_im;
        double r78729 = y_re;
        double r78730 = r78728 * r78729;
        double r78731 = x_re;
        double r78732 = y_im;
        double r78733 = r78731 * r78732;
        double r78734 = r78730 - r78733;
        double r78735 = r78729 * r78729;
        double r78736 = r78732 * r78732;
        double r78737 = r78735 + r78736;
        double r78738 = r78734 / r78737;
        return r78738;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r78739 = x_im;
        double r78740 = y_re;
        double r78741 = r78739 * r78740;
        double r78742 = x_re;
        double r78743 = y_im;
        double r78744 = r78742 * r78743;
        double r78745 = r78741 - r78744;
        double r78746 = r78740 * r78740;
        double r78747 = r78743 * r78743;
        double r78748 = r78746 + r78747;
        double r78749 = sqrt(r78748);
        double r78750 = r78745 / r78749;
        double r78751 = r78750 / r78749;
        return r78751;
}

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