Average Error: 26.0 → 25.9
Time: 20.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{x.im \cdot y.im + x.re \cdot y.re}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\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{x.im \cdot y.im + x.re \cdot y.re}{\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 r2085095 = x_re;
        double r2085096 = y_re;
        double r2085097 = r2085095 * r2085096;
        double r2085098 = x_im;
        double r2085099 = y_im;
        double r2085100 = r2085098 * r2085099;
        double r2085101 = r2085097 + r2085100;
        double r2085102 = r2085096 * r2085096;
        double r2085103 = r2085099 * r2085099;
        double r2085104 = r2085102 + r2085103;
        double r2085105 = r2085101 / r2085104;
        return r2085105;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2085106 = x_im;
        double r2085107 = y_im;
        double r2085108 = r2085106 * r2085107;
        double r2085109 = x_re;
        double r2085110 = y_re;
        double r2085111 = r2085109 * r2085110;
        double r2085112 = r2085108 + r2085111;
        double r2085113 = r2085110 * r2085110;
        double r2085114 = r2085107 * r2085107;
        double r2085115 = r2085113 + r2085114;
        double r2085116 = sqrt(r2085115);
        double r2085117 = r2085112 / r2085116;
        double r2085118 = r2085117 / r2085116;
        return r2085118;
}

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 26.0

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

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

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

    \[\leadsto \frac{\frac{x.im \cdot y.im + x.re \cdot y.re}{\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 2019120 
(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))))