Average Error: 25.6 → 25.6
Time: 17.8s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{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{x.im \cdot y.re - x.re \cdot y.im}{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}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r1221366 = x_im;
        double r1221367 = y_re;
        double r1221368 = r1221366 * r1221367;
        double r1221369 = x_re;
        double r1221370 = y_im;
        double r1221371 = r1221369 * r1221370;
        double r1221372 = r1221368 - r1221371;
        double r1221373 = r1221367 * r1221367;
        double r1221374 = r1221370 * r1221370;
        double r1221375 = r1221373 + r1221374;
        double r1221376 = r1221372 / r1221375;
        return r1221376;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1221377 = x_im;
        double r1221378 = y_re;
        double r1221379 = r1221377 * r1221378;
        double r1221380 = x_re;
        double r1221381 = y_im;
        double r1221382 = r1221380 * r1221381;
        double r1221383 = r1221379 - r1221382;
        double r1221384 = r1221378 * r1221378;
        double r1221385 = r1221381 * r1221381;
        double r1221386 = r1221384 + r1221385;
        double r1221387 = r1221383 / r1221386;
        return r1221387;
}

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

    \[\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 associate-/l/25.6

    \[\leadsto \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \sqrt{y.re \cdot y.re + y.im \cdot y.im}}}\]
  7. Simplified25.6

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{y.re \cdot y.re + y.im \cdot y.im}}\]
  8. Final simplification25.6

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]

Reproduce

herbie shell --seed 2019153 
(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))))