Average Error: 26.3 → 26.3
Time: 3.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{\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 r109696 = x_im;
        double r109697 = y_re;
        double r109698 = r109696 * r109697;
        double r109699 = x_re;
        double r109700 = y_im;
        double r109701 = r109699 * r109700;
        double r109702 = r109698 - r109701;
        double r109703 = r109697 * r109697;
        double r109704 = r109700 * r109700;
        double r109705 = r109703 + r109704;
        double r109706 = r109702 / r109705;
        return r109706;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r109707 = x_im;
        double r109708 = y_re;
        double r109709 = r109707 * r109708;
        double r109710 = x_re;
        double r109711 = y_im;
        double r109712 = r109710 * r109711;
        double r109713 = r109709 - r109712;
        double r109714 = r109708 * r109708;
        double r109715 = r109711 * r109711;
        double r109716 = r109714 + r109715;
        double r109717 = sqrt(r109716);
        double r109718 = r109713 / r109717;
        double r109719 = r109718 / r109717;
        return r109719;
}

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.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-sqrt26.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*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 2020083 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  :precision binary64
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))