Average Error: 25.5 → 25.5
Time: 27.7s
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{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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 r2655417 = x_im;
        double r2655418 = y_re;
        double r2655419 = r2655417 * r2655418;
        double r2655420 = x_re;
        double r2655421 = y_im;
        double r2655422 = r2655420 * r2655421;
        double r2655423 = r2655419 - r2655422;
        double r2655424 = r2655418 * r2655418;
        double r2655425 = r2655421 * r2655421;
        double r2655426 = r2655424 + r2655425;
        double r2655427 = r2655423 / r2655426;
        return r2655427;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2655428 = 1.0;
        double r2655429 = y_re;
        double r2655430 = r2655429 * r2655429;
        double r2655431 = y_im;
        double r2655432 = r2655431 * r2655431;
        double r2655433 = r2655430 + r2655432;
        double r2655434 = sqrt(r2655433);
        double r2655435 = x_im;
        double r2655436 = r2655429 * r2655435;
        double r2655437 = x_re;
        double r2655438 = r2655431 * r2655437;
        double r2655439 = r2655436 - r2655438;
        double r2655440 = r2655434 / r2655439;
        double r2655441 = r2655428 / r2655440;
        double r2655442 = r2655441 / r2655434;
        return r2655442;
}

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

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

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

    \[\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. Using strategy rm
  6. Applied *-un-lft-identity25.5

    \[\leadsto \frac{\frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Applied associate-/l*25.5

    \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.im \cdot y.re - x.re \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  8. Final simplification25.5

    \[\leadsto \frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]

Reproduce

herbie shell --seed 2019119 
(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))))