Average Error: 25.4 → 25.3
Time: 12.4s
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 r1956682 = x_im;
        double r1956683 = y_re;
        double r1956684 = r1956682 * r1956683;
        double r1956685 = x_re;
        double r1956686 = y_im;
        double r1956687 = r1956685 * r1956686;
        double r1956688 = r1956684 - r1956687;
        double r1956689 = r1956683 * r1956683;
        double r1956690 = r1956686 * r1956686;
        double r1956691 = r1956689 + r1956690;
        double r1956692 = r1956688 / r1956691;
        return r1956692;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1956693 = x_im;
        double r1956694 = y_re;
        double r1956695 = r1956693 * r1956694;
        double r1956696 = x_re;
        double r1956697 = y_im;
        double r1956698 = r1956696 * r1956697;
        double r1956699 = r1956695 - r1956698;
        double r1956700 = r1956694 * r1956694;
        double r1956701 = r1956697 * r1956697;
        double r1956702 = r1956700 + r1956701;
        double r1956703 = sqrt(r1956702);
        double r1956704 = r1956699 / r1956703;
        double r1956705 = r1956704 / r1956703;
        return r1956705;
}

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 2019152 
(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))))