Average Error: 26.1 → 26.1
Time: 14.1s
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}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}\]
\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r2965474 = x_im;
        double r2965475 = y_re;
        double r2965476 = r2965474 * r2965475;
        double r2965477 = x_re;
        double r2965478 = y_im;
        double r2965479 = r2965477 * r2965478;
        double r2965480 = r2965476 - r2965479;
        double r2965481 = r2965475 * r2965475;
        double r2965482 = r2965478 * r2965478;
        double r2965483 = r2965481 + r2965482;
        double r2965484 = r2965480 / r2965483;
        return r2965484;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2965485 = 1.0;
        double r2965486 = y_re;
        double r2965487 = r2965486 * r2965486;
        double r2965488 = y_im;
        double r2965489 = r2965488 * r2965488;
        double r2965490 = r2965487 + r2965489;
        double r2965491 = sqrt(r2965490);
        double r2965492 = r2965485 / r2965491;
        double r2965493 = x_im;
        double r2965494 = r2965486 * r2965493;
        double r2965495 = x_re;
        double r2965496 = r2965488 * r2965495;
        double r2965497 = r2965494 - r2965496;
        double r2965498 = r2965491 / r2965497;
        double r2965499 = r2965492 / r2965498;
        return r2965499;
}

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 clear-num26.2

    \[\leadsto \color{blue}{\frac{1}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im \cdot y.re - x.re \cdot y.im}}}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity26.2

    \[\leadsto \frac{1}{\frac{y.re \cdot y.re + y.im \cdot y.im}{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}}\]
  6. Applied add-sqr-sqrt26.2

    \[\leadsto \frac{1}{\frac{\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}}}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}\]
  7. Applied times-frac26.2

    \[\leadsto \frac{1}{\color{blue}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{1} \cdot \frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.im \cdot y.re - x.re \cdot y.im}}}\]
  8. Applied associate-/r*26.1

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

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

Reproduce

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