Average Error: 27.0 → 26.9
Time: 15.9s
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 r2785772 = x_im;
        double r2785773 = y_re;
        double r2785774 = r2785772 * r2785773;
        double r2785775 = x_re;
        double r2785776 = y_im;
        double r2785777 = r2785775 * r2785776;
        double r2785778 = r2785774 - r2785777;
        double r2785779 = r2785773 * r2785773;
        double r2785780 = r2785776 * r2785776;
        double r2785781 = r2785779 + r2785780;
        double r2785782 = r2785778 / r2785781;
        return r2785782;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2785783 = x_im;
        double r2785784 = y_re;
        double r2785785 = r2785783 * r2785784;
        double r2785786 = x_re;
        double r2785787 = y_im;
        double r2785788 = r2785786 * r2785787;
        double r2785789 = r2785785 - r2785788;
        double r2785790 = r2785784 * r2785784;
        double r2785791 = r2785787 * r2785787;
        double r2785792 = r2785790 + r2785791;
        double r2785793 = sqrt(r2785792);
        double r2785794 = r2785789 / r2785793;
        double r2785795 = r2785794 / r2785793;
        return r2785795;
}

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 27.0

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

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

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

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