Average Error: 25.5 → 25.5
Time: 14.6s
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 r2189493 = x_im;
        double r2189494 = y_re;
        double r2189495 = r2189493 * r2189494;
        double r2189496 = x_re;
        double r2189497 = y_im;
        double r2189498 = r2189496 * r2189497;
        double r2189499 = r2189495 - r2189498;
        double r2189500 = r2189494 * r2189494;
        double r2189501 = r2189497 * r2189497;
        double r2189502 = r2189500 + r2189501;
        double r2189503 = r2189499 / r2189502;
        return r2189503;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2189504 = 1.0;
        double r2189505 = y_re;
        double r2189506 = r2189505 * r2189505;
        double r2189507 = y_im;
        double r2189508 = r2189507 * r2189507;
        double r2189509 = r2189506 + r2189508;
        double r2189510 = sqrt(r2189509);
        double r2189511 = x_im;
        double r2189512 = r2189505 * r2189511;
        double r2189513 = x_re;
        double r2189514 = r2189507 * r2189513;
        double r2189515 = r2189512 - r2189514;
        double r2189516 = r2189510 / r2189515;
        double r2189517 = r2189504 / r2189516;
        double r2189518 = r2189517 / r2189510;
        return r2189518;
}

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. Using strategy rm
  6. Applied clear-num25.5

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

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