Average Error: 25.6 → 25.5
Time: 3.7s
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 r118300 = x_im;
        double r118301 = y_re;
        double r118302 = r118300 * r118301;
        double r118303 = x_re;
        double r118304 = y_im;
        double r118305 = r118303 * r118304;
        double r118306 = r118302 - r118305;
        double r118307 = r118301 * r118301;
        double r118308 = r118304 * r118304;
        double r118309 = r118307 + r118308;
        double r118310 = r118306 / r118309;
        return r118310;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r118311 = x_im;
        double r118312 = y_re;
        double r118313 = r118311 * r118312;
        double r118314 = x_re;
        double r118315 = y_im;
        double r118316 = r118314 * r118315;
        double r118317 = r118313 - r118316;
        double r118318 = r118312 * r118312;
        double r118319 = r118315 * r118315;
        double r118320 = r118318 + r118319;
        double r118321 = sqrt(r118320);
        double r118322 = r118317 / r118321;
        double r118323 = r118322 / r118321;
        return r118323;
}

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.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-sqrt25.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*25.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 simplification25.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 2019356 
(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))))