Average Error: 26.2 → 26.2
Time: 3.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{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot \frac{1}{\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{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot \frac{1}{\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 r52179 = x_im;
        double r52180 = y_re;
        double r52181 = r52179 * r52180;
        double r52182 = x_re;
        double r52183 = y_im;
        double r52184 = r52182 * r52183;
        double r52185 = r52181 - r52184;
        double r52186 = r52180 * r52180;
        double r52187 = r52183 * r52183;
        double r52188 = r52186 + r52187;
        double r52189 = r52185 / r52188;
        return r52189;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r52190 = x_im;
        double r52191 = y_re;
        double r52192 = r52190 * r52191;
        double r52193 = x_re;
        double r52194 = y_im;
        double r52195 = r52193 * r52194;
        double r52196 = r52192 - r52195;
        double r52197 = 1.0;
        double r52198 = r52191 * r52191;
        double r52199 = r52194 * r52194;
        double r52200 = r52198 + r52199;
        double r52201 = sqrt(r52200);
        double r52202 = r52197 / r52201;
        double r52203 = r52196 * r52202;
        double r52204 = r52203 / r52201;
        return r52204;
}

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

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

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

    \[\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. Using strategy rm
  6. Applied div-inv26.2

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

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