Average Error: 25.4 → 25.3
Time: 15.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 r1270022 = x_im;
        double r1270023 = y_re;
        double r1270024 = r1270022 * r1270023;
        double r1270025 = x_re;
        double r1270026 = y_im;
        double r1270027 = r1270025 * r1270026;
        double r1270028 = r1270024 - r1270027;
        double r1270029 = r1270023 * r1270023;
        double r1270030 = r1270026 * r1270026;
        double r1270031 = r1270029 + r1270030;
        double r1270032 = r1270028 / r1270031;
        return r1270032;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1270033 = x_im;
        double r1270034 = y_re;
        double r1270035 = r1270033 * r1270034;
        double r1270036 = x_re;
        double r1270037 = y_im;
        double r1270038 = r1270036 * r1270037;
        double r1270039 = r1270035 - r1270038;
        double r1270040 = r1270034 * r1270034;
        double r1270041 = r1270037 * r1270037;
        double r1270042 = r1270040 + r1270041;
        double r1270043 = sqrt(r1270042);
        double r1270044 = r1270039 / r1270043;
        double r1270045 = r1270044 / r1270043;
        return r1270045;
}

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

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

    \[\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.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 simplification25.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 2019152 
(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))))