Average Error: 25.9 → 25.9
Time: 4.9s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{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{x.im \cdot y.re - x.re \cdot y.im}{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}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r61756 = x_im;
        double r61757 = y_re;
        double r61758 = r61756 * r61757;
        double r61759 = x_re;
        double r61760 = y_im;
        double r61761 = r61759 * r61760;
        double r61762 = r61758 - r61761;
        double r61763 = r61757 * r61757;
        double r61764 = r61760 * r61760;
        double r61765 = r61763 + r61764;
        double r61766 = r61762 / r61765;
        return r61766;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r61767 = x_im;
        double r61768 = y_re;
        double r61769 = r61767 * r61768;
        double r61770 = x_re;
        double r61771 = y_im;
        double r61772 = r61770 * r61771;
        double r61773 = r61769 - r61772;
        double r61774 = r61768 * r61768;
        double r61775 = r61771 * r61771;
        double r61776 = r61774 + r61775;
        double r61777 = r61773 / r61776;
        return r61777;
}

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

    \[\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. Using strategy rm
  6. Applied div-inv25.8

    \[\leadsto \frac{\color{blue}{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot \frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Applied associate-/l*25.9

    \[\leadsto \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}}\]
  8. Simplified25.9

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{y.re \cdot y.re + y.im \cdot y.im}}\]
  9. Final simplification25.9

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]

Reproduce

herbie shell --seed 2020036 
(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))))