Average Error: 25.3 → 25.3
Time: 18.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{\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 r2104422 = x_im;
        double r2104423 = y_re;
        double r2104424 = r2104422 * r2104423;
        double r2104425 = x_re;
        double r2104426 = y_im;
        double r2104427 = r2104425 * r2104426;
        double r2104428 = r2104424 - r2104427;
        double r2104429 = r2104423 * r2104423;
        double r2104430 = r2104426 * r2104426;
        double r2104431 = r2104429 + r2104430;
        double r2104432 = r2104428 / r2104431;
        return r2104432;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2104433 = x_im;
        double r2104434 = y_re;
        double r2104435 = r2104433 * r2104434;
        double r2104436 = x_re;
        double r2104437 = y_im;
        double r2104438 = r2104436 * r2104437;
        double r2104439 = r2104435 - r2104438;
        double r2104440 = r2104434 * r2104434;
        double r2104441 = r2104437 * r2104437;
        double r2104442 = r2104440 + r2104441;
        double r2104443 = sqrt(r2104442);
        double r2104444 = r2104439 / r2104443;
        double r2104445 = r2104444 / r2104443;
        return r2104445;
}

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

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

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

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

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