Average Error: 25.7 → 25.7
Time: 9.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 r63388 = x_im;
        double r63389 = y_re;
        double r63390 = r63388 * r63389;
        double r63391 = x_re;
        double r63392 = y_im;
        double r63393 = r63391 * r63392;
        double r63394 = r63390 - r63393;
        double r63395 = r63389 * r63389;
        double r63396 = r63392 * r63392;
        double r63397 = r63395 + r63396;
        double r63398 = r63394 / r63397;
        return r63398;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r63399 = x_im;
        double r63400 = y_re;
        double r63401 = r63399 * r63400;
        double r63402 = x_re;
        double r63403 = y_im;
        double r63404 = r63402 * r63403;
        double r63405 = r63401 - r63404;
        double r63406 = r63400 * r63400;
        double r63407 = r63403 * r63403;
        double r63408 = r63406 + r63407;
        double r63409 = sqrt(r63408);
        double r63410 = r63405 / r63409;
        double r63411 = r63410 / r63409;
        return r63411;
}

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

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

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