Average Error: 26.6 → 26.5
Time: 3.4s
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 - 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 \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}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r49412 = x_im;
        double r49413 = y_re;
        double r49414 = r49412 * r49413;
        double r49415 = x_re;
        double r49416 = y_im;
        double r49417 = r49415 * r49416;
        double r49418 = r49414 - r49417;
        double r49419 = r49413 * r49413;
        double r49420 = r49416 * r49416;
        double r49421 = r49419 + r49420;
        double r49422 = r49418 / r49421;
        return r49422;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r49423 = x_im;
        double r49424 = y_re;
        double r49425 = r49423 * r49424;
        double r49426 = x_re;
        double r49427 = y_im;
        double r49428 = r49426 * r49427;
        double r49429 = r49425 - r49428;
        double r49430 = r49424 * r49424;
        double r49431 = r49427 * r49427;
        double r49432 = r49430 + r49431;
        double r49433 = sqrt(r49432);
        double r49434 = r49429 / r49433;
        double r49435 = r49434 / r49433;
        return r49435;
}

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

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

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

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

    \[\leadsto \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}}\]

Reproduce

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