Average Error: 25.7 → 25.6
Time: 12.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{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 r53486 = x_im;
        double r53487 = y_re;
        double r53488 = r53486 * r53487;
        double r53489 = x_re;
        double r53490 = y_im;
        double r53491 = r53489 * r53490;
        double r53492 = r53488 - r53491;
        double r53493 = r53487 * r53487;
        double r53494 = r53490 * r53490;
        double r53495 = r53493 + r53494;
        double r53496 = r53492 / r53495;
        return r53496;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r53497 = x_im;
        double r53498 = y_re;
        double r53499 = r53497 * r53498;
        double r53500 = x_re;
        double r53501 = y_im;
        double r53502 = r53500 * r53501;
        double r53503 = r53499 - r53502;
        double r53504 = r53498 * r53498;
        double r53505 = r53501 * r53501;
        double r53506 = r53504 + r53505;
        double r53507 = sqrt(r53506);
        double r53508 = r53503 / r53507;
        double r53509 = r53508 / r53507;
        return r53509;
}

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

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

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

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

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