Average Error: 25.8 → 25.7
Time: 22.6s
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{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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 r2349918 = x_im;
        double r2349919 = y_re;
        double r2349920 = r2349918 * r2349919;
        double r2349921 = x_re;
        double r2349922 = y_im;
        double r2349923 = r2349921 * r2349922;
        double r2349924 = r2349920 - r2349923;
        double r2349925 = r2349919 * r2349919;
        double r2349926 = r2349922 * r2349922;
        double r2349927 = r2349925 + r2349926;
        double r2349928 = r2349924 / r2349927;
        return r2349928;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2349929 = 1.0;
        double r2349930 = y_re;
        double r2349931 = r2349930 * r2349930;
        double r2349932 = y_im;
        double r2349933 = r2349932 * r2349932;
        double r2349934 = r2349931 + r2349933;
        double r2349935 = sqrt(r2349934);
        double r2349936 = x_im;
        double r2349937 = r2349930 * r2349936;
        double r2349938 = x_re;
        double r2349939 = r2349932 * r2349938;
        double r2349940 = r2349937 - r2349939;
        double r2349941 = r2349935 / r2349940;
        double r2349942 = r2349929 / r2349941;
        double r2349943 = r2349942 / r2349935;
        return r2349943;
}

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

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

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

    \[\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 *-un-lft-identity25.7

    \[\leadsto \frac{\frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\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.7

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

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

Reproduce

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