Average Error: 25.5 → 25.4
Time: 13.9s
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 r1916891 = x_im;
        double r1916892 = y_re;
        double r1916893 = r1916891 * r1916892;
        double r1916894 = x_re;
        double r1916895 = y_im;
        double r1916896 = r1916894 * r1916895;
        double r1916897 = r1916893 - r1916896;
        double r1916898 = r1916892 * r1916892;
        double r1916899 = r1916895 * r1916895;
        double r1916900 = r1916898 + r1916899;
        double r1916901 = r1916897 / r1916900;
        return r1916901;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1916902 = x_im;
        double r1916903 = y_re;
        double r1916904 = r1916902 * r1916903;
        double r1916905 = x_re;
        double r1916906 = y_im;
        double r1916907 = r1916905 * r1916906;
        double r1916908 = r1916904 - r1916907;
        double r1916909 = r1916903 * r1916903;
        double r1916910 = r1916906 * r1916906;
        double r1916911 = r1916909 + r1916910;
        double r1916912 = sqrt(r1916911);
        double r1916913 = r1916908 / r1916912;
        double r1916914 = r1916913 / r1916912;
        return r1916914;
}

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

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

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

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

    \[\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 2019135 
(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))))