Average Error: 25.6 → 25.6
Time: 10.0s
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 r1334139 = x_re;
        double r1334140 = y_re;
        double r1334141 = r1334139 * r1334140;
        double r1334142 = x_im;
        double r1334143 = y_im;
        double r1334144 = r1334142 * r1334143;
        double r1334145 = r1334141 + r1334144;
        double r1334146 = r1334140 * r1334140;
        double r1334147 = r1334143 * r1334143;
        double r1334148 = r1334146 + r1334147;
        double r1334149 = r1334145 / r1334148;
        return r1334149;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1334150 = x_im;
        double r1334151 = y_im;
        double r1334152 = r1334150 * r1334151;
        double r1334153 = x_re;
        double r1334154 = y_re;
        double r1334155 = r1334153 * r1334154;
        double r1334156 = r1334152 + r1334155;
        double r1334157 = r1334154 * r1334154;
        double r1334158 = r1334151 * r1334151;
        double r1334159 = r1334157 + r1334158;
        double r1334160 = sqrt(r1334159);
        double r1334161 = r1334156 / r1334160;
        double r1334162 = r1334161 / r1334160;
        return r1334162;
}

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

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

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

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

    \[\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 2019156 
(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))))