Average Error: 26.4 → 26.3
Time: 15.0s
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 r4916469 = x_im;
        double r4916470 = y_re;
        double r4916471 = r4916469 * r4916470;
        double r4916472 = x_re;
        double r4916473 = y_im;
        double r4916474 = r4916472 * r4916473;
        double r4916475 = r4916471 - r4916474;
        double r4916476 = r4916470 * r4916470;
        double r4916477 = r4916473 * r4916473;
        double r4916478 = r4916476 + r4916477;
        double r4916479 = r4916475 / r4916478;
        return r4916479;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r4916480 = x_im;
        double r4916481 = y_re;
        double r4916482 = r4916480 * r4916481;
        double r4916483 = x_re;
        double r4916484 = y_im;
        double r4916485 = r4916483 * r4916484;
        double r4916486 = r4916482 - r4916485;
        double r4916487 = r4916481 * r4916481;
        double r4916488 = r4916484 * r4916484;
        double r4916489 = r4916487 + r4916488;
        double r4916490 = sqrt(r4916489);
        double r4916491 = r4916486 / r4916490;
        double r4916492 = r4916491 / r4916490;
        return r4916492;
}

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

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

    \[\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.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 simplification26.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 2019174 
(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))))