Average Error: 26.4 → 23.9
Time: 10.7s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{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{x.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} - \frac{y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \frac{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 r71416 = x_im;
        double r71417 = y_re;
        double r71418 = r71416 * r71417;
        double r71419 = x_re;
        double r71420 = y_im;
        double r71421 = r71419 * r71420;
        double r71422 = r71418 - r71421;
        double r71423 = r71417 * r71417;
        double r71424 = r71420 * r71420;
        double r71425 = r71423 + r71424;
        double r71426 = r71422 / r71425;
        return r71426;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r71427 = x_im;
        double r71428 = y_re;
        double r71429 = r71428 * r71428;
        double r71430 = y_im;
        double r71431 = r71430 * r71430;
        double r71432 = r71429 + r71431;
        double r71433 = sqrt(r71432);
        double r71434 = r71427 / r71433;
        double r71435 = r71428 / r71433;
        double r71436 = r71434 * r71435;
        double r71437 = r71430 / r71433;
        double r71438 = x_re;
        double r71439 = r71438 / r71433;
        double r71440 = r71437 * r71439;
        double r71441 = r71436 - r71440;
        return r71441;
}

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

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

    \[\leadsto \color{blue}{\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} - \frac{x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}}\]
  4. Simplified25.0

    \[\leadsto \color{blue}{\frac{y.re}{y.re \cdot y.re + y.im \cdot y.im} \cdot x.im} - \frac{x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt25.0

    \[\leadsto \frac{y.re}{y.re \cdot y.re + y.im \cdot y.im} \cdot x.im - \frac{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}}}\]
  7. Applied times-frac23.8

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

    \[\leadsto \frac{y.re}{y.re \cdot y.re + y.im \cdot y.im} \cdot x.im - \color{blue}{\frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}} \cdot \frac{y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  9. Simplified23.8

    \[\leadsto \frac{y.re}{y.re \cdot y.re + y.im \cdot y.im} \cdot x.im - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \color{blue}{\frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}}\]
  10. Using strategy rm
  11. Applied *-un-lft-identity23.8

    \[\leadsto \frac{y.re}{\color{blue}{1 \cdot \left(y.re \cdot y.re + y.im \cdot y.im\right)}} \cdot x.im - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  12. Applied *-un-lft-identity23.8

    \[\leadsto \frac{\color{blue}{1 \cdot y.re}}{1 \cdot \left(y.re \cdot y.re + y.im \cdot y.im\right)} \cdot x.im - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  13. Applied times-frac23.8

    \[\leadsto \color{blue}{\left(\frac{1}{1} \cdot \frac{y.re}{y.re \cdot y.re + y.im \cdot y.im}\right)} \cdot x.im - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  14. Applied associate-*l*23.8

    \[\leadsto \color{blue}{\frac{1}{1} \cdot \left(\frac{y.re}{y.re \cdot y.re + y.im \cdot y.im} \cdot x.im\right)} - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  15. Simplified25.3

    \[\leadsto \frac{1}{1} \cdot \color{blue}{\frac{x.im \cdot y.re}{y.im \cdot y.im + y.re \cdot y.re}} - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  16. Using strategy rm
  17. Applied add-sqr-sqrt25.3

    \[\leadsto \frac{1}{1} \cdot \frac{x.im \cdot y.re}{\color{blue}{\sqrt{y.im \cdot y.im + y.re \cdot y.re} \cdot \sqrt{y.im \cdot y.im + y.re \cdot y.re}}} - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  18. Applied times-frac23.9

    \[\leadsto \frac{1}{1} \cdot \color{blue}{\left(\frac{x.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\right)} - \frac{x.re}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}} \cdot \frac{y.im}{\sqrt{y.im \cdot y.im + y.re \cdot y.re}}\]
  19. Final simplification23.9

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

Reproduce

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