Average Error: 25.9 → 25.9
Time: 13.9s
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 r2716604 = x_im;
        double r2716605 = y_re;
        double r2716606 = r2716604 * r2716605;
        double r2716607 = x_re;
        double r2716608 = y_im;
        double r2716609 = r2716607 * r2716608;
        double r2716610 = r2716606 - r2716609;
        double r2716611 = r2716605 * r2716605;
        double r2716612 = r2716608 * r2716608;
        double r2716613 = r2716611 + r2716612;
        double r2716614 = r2716610 / r2716613;
        return r2716614;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2716615 = x_im;
        double r2716616 = y_re;
        double r2716617 = r2716615 * r2716616;
        double r2716618 = x_re;
        double r2716619 = y_im;
        double r2716620 = r2716618 * r2716619;
        double r2716621 = r2716617 - r2716620;
        double r2716622 = r2716616 * r2716616;
        double r2716623 = r2716619 * r2716619;
        double r2716624 = r2716622 + r2716623;
        double r2716625 = sqrt(r2716624);
        double r2716626 = r2716621 / r2716625;
        double r2716627 = r2716626 / r2716625;
        return r2716627;
}

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 25.9

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

    \[\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*25.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 simplification25.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 2019172 
(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))))