Average Error: 25.7 → 25.7
Time: 13.8s
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}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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 r1676320 = x_im;
        double r1676321 = y_re;
        double r1676322 = r1676320 * r1676321;
        double r1676323 = x_re;
        double r1676324 = y_im;
        double r1676325 = r1676323 * r1676324;
        double r1676326 = r1676322 - r1676325;
        double r1676327 = r1676321 * r1676321;
        double r1676328 = r1676324 * r1676324;
        double r1676329 = r1676327 + r1676328;
        double r1676330 = r1676326 / r1676329;
        return r1676330;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1676331 = 1.0;
        double r1676332 = y_re;
        double r1676333 = r1676332 * r1676332;
        double r1676334 = y_im;
        double r1676335 = r1676334 * r1676334;
        double r1676336 = r1676333 + r1676335;
        double r1676337 = sqrt(r1676336);
        double r1676338 = x_im;
        double r1676339 = r1676332 * r1676338;
        double r1676340 = x_re;
        double r1676341 = r1676334 * r1676340;
        double r1676342 = r1676339 - r1676341;
        double r1676343 = r1676337 / r1676342;
        double r1676344 = r1676331 / r1676343;
        double r1676345 = r1676344 / r1676337;
        return r1676345;
}

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

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

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

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

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

    \[\leadsto \frac{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]

Reproduce

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