Average Error: 25.9 → 25.9
Time: 13.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 r64805 = x_im;
        double r64806 = y_re;
        double r64807 = r64805 * r64806;
        double r64808 = x_re;
        double r64809 = y_im;
        double r64810 = r64808 * r64809;
        double r64811 = r64807 - r64810;
        double r64812 = r64806 * r64806;
        double r64813 = r64809 * r64809;
        double r64814 = r64812 + r64813;
        double r64815 = r64811 / r64814;
        return r64815;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r64816 = x_im;
        double r64817 = y_re;
        double r64818 = r64816 * r64817;
        double r64819 = x_re;
        double r64820 = y_im;
        double r64821 = r64819 * r64820;
        double r64822 = r64818 - r64821;
        double r64823 = r64817 * r64817;
        double r64824 = r64820 * r64820;
        double r64825 = r64823 + r64824;
        double r64826 = sqrt(r64825);
        double r64827 = r64822 / r64826;
        double r64828 = r64827 / r64826;
        return r64828;
}

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

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

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