Average Error: 25.1 → 25.0
Time: 14.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 r2792534 = x_im;
        double r2792535 = y_re;
        double r2792536 = r2792534 * r2792535;
        double r2792537 = x_re;
        double r2792538 = y_im;
        double r2792539 = r2792537 * r2792538;
        double r2792540 = r2792536 - r2792539;
        double r2792541 = r2792535 * r2792535;
        double r2792542 = r2792538 * r2792538;
        double r2792543 = r2792541 + r2792542;
        double r2792544 = r2792540 / r2792543;
        return r2792544;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2792545 = x_im;
        double r2792546 = y_re;
        double r2792547 = r2792545 * r2792546;
        double r2792548 = x_re;
        double r2792549 = y_im;
        double r2792550 = r2792548 * r2792549;
        double r2792551 = r2792547 - r2792550;
        double r2792552 = r2792546 * r2792546;
        double r2792553 = r2792549 * r2792549;
        double r2792554 = r2792552 + r2792553;
        double r2792555 = sqrt(r2792554);
        double r2792556 = r2792551 / r2792555;
        double r2792557 = r2792556 / r2792555;
        return r2792557;
}

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.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-sqrt25.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*25.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 simplification25.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 2019164 
(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))))