Average Error: 25.9 → 22.1
Time: 3.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{x.im \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{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{x.im \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{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 r124465 = x_im;
        double r124466 = y_re;
        double r124467 = r124465 * r124466;
        double r124468 = x_re;
        double r124469 = y_im;
        double r124470 = r124468 * r124469;
        double r124471 = r124467 - r124470;
        double r124472 = r124466 * r124466;
        double r124473 = r124469 * r124469;
        double r124474 = r124472 + r124473;
        double r124475 = r124471 / r124474;
        return r124475;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r124476 = x_im;
        double r124477 = y_re;
        double r124478 = r124477 * r124477;
        double r124479 = y_im;
        double r124480 = r124479 * r124479;
        double r124481 = r124478 + r124480;
        double r124482 = sqrt(r124481);
        double r124483 = r124477 / r124482;
        double r124484 = r124476 * r124483;
        double r124485 = x_re;
        double r124486 = r124482 / r124479;
        double r124487 = r124485 / r124486;
        double r124488 = r124484 - r124487;
        double r124489 = r124488 / r124482;
        return r124489;
}

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

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

    \[\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 associate-/l*24.0

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \color{blue}{\frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  9. Using strategy rm
  10. Applied *-un-lft-identity24.0

    \[\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}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  11. Applied sqrt-prod24.0

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

    \[\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}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  13. Simplified22.1

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

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

Reproduce

herbie shell --seed 2020001 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  :precision binary64
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))