Average Error: 25.7 → 22.4
Time: 13.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{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 r1461660 = x_im;
        double r1461661 = y_re;
        double r1461662 = r1461660 * r1461661;
        double r1461663 = x_re;
        double r1461664 = y_im;
        double r1461665 = r1461663 * r1461664;
        double r1461666 = r1461662 - r1461665;
        double r1461667 = r1461661 * r1461661;
        double r1461668 = r1461664 * r1461664;
        double r1461669 = r1461667 + r1461668;
        double r1461670 = r1461666 / r1461669;
        return r1461670;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1461671 = y_re;
        double r1461672 = r1461671 * r1461671;
        double r1461673 = y_im;
        double r1461674 = r1461673 * r1461673;
        double r1461675 = r1461672 + r1461674;
        double r1461676 = sqrt(r1461675);
        double r1461677 = r1461671 / r1461676;
        double r1461678 = x_im;
        double r1461679 = r1461677 * r1461678;
        double r1461680 = x_re;
        double r1461681 = r1461673 / r1461676;
        double r1461682 = r1461680 * r1461681;
        double r1461683 = r1461679 - r1461682;
        double r1461684 = r1461683 / r1461676;
        return r1461684;
}

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

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

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

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

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

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\color{blue}{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}}\]
  9. Applied times-frac24.0

    \[\leadsto \frac{\color{blue}{\frac{x.im}{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}}\]
  10. Simplified24.0

    \[\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}}\]
  11. Using strategy rm
  12. Applied *-un-lft-identity24.0

    \[\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}{1 \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  13. Applied times-frac22.4

    \[\leadsto \frac{x.im \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \color{blue}{\frac{x.re}{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}}\]
  14. Simplified22.4

    \[\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}}\]
  15. Final simplification22.4

    \[\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 2019149 
(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))))