Average Error: 26.4 → 26.4
Time: 4.5s
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}}{x.im \cdot y.re - x.re \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{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}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r67749 = x_im;
        double r67750 = y_re;
        double r67751 = r67749 * r67750;
        double r67752 = x_re;
        double r67753 = y_im;
        double r67754 = r67752 * r67753;
        double r67755 = r67751 - r67754;
        double r67756 = r67750 * r67750;
        double r67757 = r67753 * r67753;
        double r67758 = r67756 + r67757;
        double r67759 = r67755 / r67758;
        return r67759;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r67760 = 1.0;
        double r67761 = y_re;
        double r67762 = r67761 * r67761;
        double r67763 = y_im;
        double r67764 = r67763 * r67763;
        double r67765 = r67762 + r67764;
        double r67766 = sqrt(r67765);
        double r67767 = x_im;
        double r67768 = r67767 * r67761;
        double r67769 = x_re;
        double r67770 = r67769 * r67763;
        double r67771 = r67768 - r67770;
        double r67772 = r67766 / r67771;
        double r67773 = r67760 / r67772;
        double r67774 = r67773 / r67766;
        return r67774;
}

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

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

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

    \[\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 clear-num26.4

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

    \[\leadsto \frac{\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}}\]

Reproduce

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