Average Error: 26.1 → 22.8
Time: 13.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{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot x.im - x.re \cdot \frac{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{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot x.im - x.re \cdot \frac{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 r2472701 = x_im;
        double r2472702 = y_re;
        double r2472703 = r2472701 * r2472702;
        double r2472704 = x_re;
        double r2472705 = y_im;
        double r2472706 = r2472704 * r2472705;
        double r2472707 = r2472703 - r2472706;
        double r2472708 = r2472702 * r2472702;
        double r2472709 = r2472705 * r2472705;
        double r2472710 = r2472708 + r2472709;
        double r2472711 = r2472707 / r2472710;
        return r2472711;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2472712 = y_re;
        double r2472713 = r2472712 * r2472712;
        double r2472714 = y_im;
        double r2472715 = r2472714 * r2472714;
        double r2472716 = r2472713 + r2472715;
        double r2472717 = sqrt(r2472716);
        double r2472718 = r2472712 / r2472717;
        double r2472719 = x_im;
        double r2472720 = r2472718 * r2472719;
        double r2472721 = x_re;
        double r2472722 = r2472714 / r2472717;
        double r2472723 = r2472721 * r2472722;
        double r2472724 = r2472720 - r2472723;
        double r2472725 = r2472724 / r2472717;
        return r2472725;
}

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

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

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

    \[\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 div-sub26.1

    \[\leadsto \frac{\color{blue}{\frac{x.im \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{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}}\]
  7. Using strategy rm
  8. Applied *-un-lft-identity26.1

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\sqrt{\color{blue}{1 \cdot \left(y.re \cdot y.re + y.im \cdot y.im\right)}}} - \frac{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}}\]
  9. Applied sqrt-prod26.1

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\color{blue}{\sqrt{1} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}} - \frac{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}}\]
  10. Applied times-frac24.5

    \[\leadsto \frac{\color{blue}{\frac{x.im}{\sqrt{1}} \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}} - \frac{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}}\]
  11. Simplified24.5

    \[\leadsto \frac{\color{blue}{x.im} \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{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}}\]
  12. Using strategy rm
  13. Applied *-un-lft-identity24.5

    \[\leadsto \frac{x.im \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re \cdot y.im}{\sqrt{\color{blue}{1 \cdot \left(y.re \cdot y.re + y.im \cdot y.im\right)}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  14. Applied sqrt-prod24.5

    \[\leadsto \frac{x.im \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re \cdot y.im}{\color{blue}{\sqrt{1} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  15. Applied times-frac22.8

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

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

    \[\leadsto \frac{\frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot x.im - x.re \cdot \frac{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 2019133 
(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))))