Average Error: 26.0 → 25.9
Time: 3.2s
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 r102728 = x_im;
        double r102729 = y_re;
        double r102730 = r102728 * r102729;
        double r102731 = x_re;
        double r102732 = y_im;
        double r102733 = r102731 * r102732;
        double r102734 = r102730 - r102733;
        double r102735 = r102729 * r102729;
        double r102736 = r102732 * r102732;
        double r102737 = r102735 + r102736;
        double r102738 = r102734 / r102737;
        return r102738;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r102739 = x_im;
        double r102740 = y_re;
        double r102741 = r102739 * r102740;
        double r102742 = x_re;
        double r102743 = y_im;
        double r102744 = r102742 * r102743;
        double r102745 = r102741 - r102744;
        double r102746 = r102740 * r102740;
        double r102747 = r102743 * r102743;
        double r102748 = r102746 + r102747;
        double r102749 = sqrt(r102748);
        double r102750 = r102745 / r102749;
        double r102751 = r102750 / r102749;
        return r102751;
}

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

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

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

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

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