Average Error: 26.1 → 25.3
Time: 3.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{x.im}{\left|e^{\log \left(\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}\right)}\right|} \cdot \frac{y.re}{\sqrt{\sqrt[3]{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}}\]
\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}{\left|e^{\log \left(\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}\right)}\right|} \cdot \frac{y.re}{\sqrt{\sqrt[3]{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}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r71342 = x_im;
        double r71343 = y_re;
        double r71344 = r71342 * r71343;
        double r71345 = x_re;
        double r71346 = y_im;
        double r71347 = r71345 * r71346;
        double r71348 = r71344 - r71347;
        double r71349 = r71343 * r71343;
        double r71350 = r71346 * r71346;
        double r71351 = r71349 + r71350;
        double r71352 = r71348 / r71351;
        return r71352;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r71353 = x_im;
        double r71354 = y_re;
        double r71355 = r71354 * r71354;
        double r71356 = y_im;
        double r71357 = r71356 * r71356;
        double r71358 = r71355 + r71357;
        double r71359 = cbrt(r71358);
        double r71360 = log(r71359);
        double r71361 = exp(r71360);
        double r71362 = fabs(r71361);
        double r71363 = r71353 / r71362;
        double r71364 = sqrt(r71359);
        double r71365 = r71354 / r71364;
        double r71366 = r71363 * r71365;
        double r71367 = x_re;
        double r71368 = r71367 * r71356;
        double r71369 = sqrt(r71358);
        double r71370 = r71368 / r71369;
        double r71371 = r71366 - r71370;
        double r71372 = r71371 / r71369;
        return r71372;
}

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

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

    \[\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 add-cube-cbrt26.2

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\sqrt{\color{blue}{\left(\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}\right) \cdot \sqrt[3]{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}}\]
  9. Applied sqrt-prod26.2

    \[\leadsto \frac{\frac{x.im \cdot y.re}{\color{blue}{\sqrt{\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}} \cdot \sqrt{\sqrt[3]{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}}\]
  10. Applied times-frac24.5

    \[\leadsto \frac{\color{blue}{\frac{x.im}{\sqrt{\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}}} \cdot \frac{y.re}{\sqrt{\sqrt[3]{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}}\]
  11. Simplified24.5

    \[\leadsto \frac{\color{blue}{\frac{x.im}{\left|\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}\right|}} \cdot \frac{y.re}{\sqrt{\sqrt[3]{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}}\]
  12. Using strategy rm
  13. Applied add-exp-log25.3

    \[\leadsto \frac{\frac{x.im}{\left|\color{blue}{e^{\log \left(\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}\right)}}\right|} \cdot \frac{y.re}{\sqrt{\sqrt[3]{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}}\]
  14. Final simplification25.3

    \[\leadsto \frac{\frac{x.im}{\left|e^{\log \left(\sqrt[3]{y.re \cdot y.re + y.im \cdot y.im}\right)}\right|} \cdot \frac{y.re}{\sqrt{\sqrt[3]{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}}\]

Reproduce

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