Average Error: 25.7 → 25.7
Time: 14.4s
Precision: 64
\[\frac{x.re \cdot y.re + x.im \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.im \cdot x.im + y.re \cdot x.re}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
\frac{x.re \cdot y.re + x.im \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.im \cdot x.im + y.re \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 r1846126 = x_re;
        double r1846127 = y_re;
        double r1846128 = r1846126 * r1846127;
        double r1846129 = x_im;
        double r1846130 = y_im;
        double r1846131 = r1846129 * r1846130;
        double r1846132 = r1846128 + r1846131;
        double r1846133 = r1846127 * r1846127;
        double r1846134 = r1846130 * r1846130;
        double r1846135 = r1846133 + r1846134;
        double r1846136 = r1846132 / r1846135;
        return r1846136;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1846137 = 1.0;
        double r1846138 = y_re;
        double r1846139 = r1846138 * r1846138;
        double r1846140 = y_im;
        double r1846141 = r1846140 * r1846140;
        double r1846142 = r1846139 + r1846141;
        double r1846143 = sqrt(r1846142);
        double r1846144 = x_im;
        double r1846145 = r1846140 * r1846144;
        double r1846146 = x_re;
        double r1846147 = r1846138 * r1846146;
        double r1846148 = r1846145 + r1846147;
        double r1846149 = r1846143 / r1846148;
        double r1846150 = r1846137 / r1846149;
        double r1846151 = r1846150 / r1846143;
        return r1846151;
}

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

    \[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt25.7

    \[\leadsto \frac{x.re \cdot y.re + x.im \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.re \cdot y.re + x.im \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 clear-num25.7

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

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

Reproduce

herbie shell --seed 2019130 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, real part"
  (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))