Average Error: 27.0 → 26.9
Time: 14.8s
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 r2685620 = x_im;
        double r2685621 = y_re;
        double r2685622 = r2685620 * r2685621;
        double r2685623 = x_re;
        double r2685624 = y_im;
        double r2685625 = r2685623 * r2685624;
        double r2685626 = r2685622 - r2685625;
        double r2685627 = r2685621 * r2685621;
        double r2685628 = r2685624 * r2685624;
        double r2685629 = r2685627 + r2685628;
        double r2685630 = r2685626 / r2685629;
        return r2685630;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2685631 = x_im;
        double r2685632 = y_re;
        double r2685633 = r2685631 * r2685632;
        double r2685634 = x_re;
        double r2685635 = y_im;
        double r2685636 = r2685634 * r2685635;
        double r2685637 = r2685633 - r2685636;
        double r2685638 = r2685632 * r2685632;
        double r2685639 = r2685635 * r2685635;
        double r2685640 = r2685638 + r2685639;
        double r2685641 = sqrt(r2685640);
        double r2685642 = r2685637 / r2685641;
        double r2685643 = r2685642 / r2685641;
        return r2685643;
}

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 27.0

    \[\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-sqrt27.0

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

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

    \[\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 2019171 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))