Average Error: 25.8 → 24.3
Time: 16.1s
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}{\sqrt{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}} \cdot \frac{y.re}{\sqrt{\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{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \sqrt{\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}{\sqrt{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}} \cdot \frac{y.re}{\sqrt{\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{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \sqrt{\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 r59634 = x_im;
        double r59635 = y_re;
        double r59636 = r59634 * r59635;
        double r59637 = x_re;
        double r59638 = y_im;
        double r59639 = r59637 * r59638;
        double r59640 = r59636 - r59639;
        double r59641 = r59635 * r59635;
        double r59642 = r59638 * r59638;
        double r59643 = r59641 + r59642;
        double r59644 = r59640 / r59643;
        return r59644;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r59645 = x_im;
        double r59646 = y_re;
        double r59647 = r59646 * r59646;
        double r59648 = y_im;
        double r59649 = r59648 * r59648;
        double r59650 = r59647 + r59649;
        double r59651 = sqrt(r59650);
        double r59652 = sqrt(r59651);
        double r59653 = r59645 / r59652;
        double r59654 = r59646 / r59652;
        double r59655 = r59653 * r59654;
        double r59656 = x_re;
        double r59657 = r59656 * r59648;
        double r59658 = r59657 / r59651;
        double r59659 = r59655 - r59658;
        double r59660 = r59652 * r59652;
        double r59661 = r59659 / r59660;
        return r59661;
}

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

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

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

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\sqrt{\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}}}} - \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-prod25.8

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

    \[\leadsto \frac{\color{blue}{\frac{x.im}{\sqrt{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}} \cdot \frac{y.re}{\sqrt{\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 add-sqr-sqrt24.1

    \[\leadsto \frac{\frac{x.im}{\sqrt{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}} \cdot \frac{y.re}{\sqrt{\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{\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}}}}\]
  13. Applied sqrt-prod24.3

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

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

Reproduce

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