Average Error: 26.1 → 24.5
Time: 3.2s
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}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{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}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{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 r74480 = x_im;
        double r74481 = y_re;
        double r74482 = r74480 * r74481;
        double r74483 = x_re;
        double r74484 = y_im;
        double r74485 = r74483 * r74484;
        double r74486 = r74482 - r74485;
        double r74487 = r74481 * r74481;
        double r74488 = r74484 * r74484;
        double r74489 = r74487 + r74488;
        double r74490 = r74486 / r74489;
        return r74490;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r74491 = x_im;
        double r74492 = y_re;
        double r74493 = r74491 * r74492;
        double r74494 = r74492 * r74492;
        double r74495 = y_im;
        double r74496 = r74495 * r74495;
        double r74497 = r74494 + r74496;
        double r74498 = sqrt(r74497);
        double r74499 = r74493 / r74498;
        double r74500 = x_re;
        double r74501 = r74498 / r74495;
        double r74502 = r74500 / r74501;
        double r74503 = r74499 - r74502;
        double r74504 = r74503 / r74498;
        return r74504;
}

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 26.1

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

    \[\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*26.1

    \[\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 div-sub26.1

    \[\leadsto \frac{\color{blue}{\frac{x.im \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{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}}\]
  7. Using strategy rm
  8. Applied associate-/l*24.5

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \color{blue}{\frac{x.re}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  9. Final simplification24.5

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

Reproduce

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