Average Error: 26.8 → 26.7
Time: 3.6s
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 r56343 = x_im;
        double r56344 = y_re;
        double r56345 = r56343 * r56344;
        double r56346 = x_re;
        double r56347 = y_im;
        double r56348 = r56346 * r56347;
        double r56349 = r56345 - r56348;
        double r56350 = r56344 * r56344;
        double r56351 = r56347 * r56347;
        double r56352 = r56350 + r56351;
        double r56353 = r56349 / r56352;
        return r56353;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r56354 = x_im;
        double r56355 = y_re;
        double r56356 = r56354 * r56355;
        double r56357 = x_re;
        double r56358 = y_im;
        double r56359 = r56357 * r56358;
        double r56360 = r56356 - r56359;
        double r56361 = r56355 * r56355;
        double r56362 = r56358 * r56358;
        double r56363 = r56361 + r56362;
        double r56364 = sqrt(r56363);
        double r56365 = r56360 / r56364;
        double r56366 = r56365 / r56364;
        return r56366;
}

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

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

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

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

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