Average Error: 25.4 → 25.3
Time: 11.3s
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 \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}}\]
\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 \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}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r1306686 = x_im;
        double r1306687 = y_re;
        double r1306688 = r1306686 * r1306687;
        double r1306689 = x_re;
        double r1306690 = y_im;
        double r1306691 = r1306689 * r1306690;
        double r1306692 = r1306688 - r1306691;
        double r1306693 = r1306687 * r1306687;
        double r1306694 = r1306690 * r1306690;
        double r1306695 = r1306693 + r1306694;
        double r1306696 = r1306692 / r1306695;
        return r1306696;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1306697 = x_im;
        double r1306698 = y_re;
        double r1306699 = r1306697 * r1306698;
        double r1306700 = x_re;
        double r1306701 = y_im;
        double r1306702 = r1306700 * r1306701;
        double r1306703 = r1306699 - r1306702;
        double r1306704 = r1306698 * r1306698;
        double r1306705 = r1306701 * r1306701;
        double r1306706 = r1306704 + r1306705;
        double r1306707 = sqrt(r1306706);
        double r1306708 = r1306703 / r1306707;
        double r1306709 = r1306708 / r1306707;
        return r1306709;
}

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.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-sqrt25.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*25.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. Final simplification25.3

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

Reproduce

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