Average Error: 26.1 → 26.0
Time: 16.5s
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 r3237354 = x_im;
        double r3237355 = y_re;
        double r3237356 = r3237354 * r3237355;
        double r3237357 = x_re;
        double r3237358 = y_im;
        double r3237359 = r3237357 * r3237358;
        double r3237360 = r3237356 - r3237359;
        double r3237361 = r3237355 * r3237355;
        double r3237362 = r3237358 * r3237358;
        double r3237363 = r3237361 + r3237362;
        double r3237364 = r3237360 / r3237363;
        return r3237364;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3237365 = x_im;
        double r3237366 = y_re;
        double r3237367 = r3237365 * r3237366;
        double r3237368 = x_re;
        double r3237369 = y_im;
        double r3237370 = r3237368 * r3237369;
        double r3237371 = r3237367 - r3237370;
        double r3237372 = r3237366 * r3237366;
        double r3237373 = r3237369 * r3237369;
        double r3237374 = r3237372 + r3237373;
        double r3237375 = sqrt(r3237374);
        double r3237376 = r3237371 / r3237375;
        double r3237377 = r3237376 / r3237375;
        return r3237377;
}

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

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

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

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

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