Average Error: 26.7 → 26.7
Time: 14.7s
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 r3442003 = x_re;
        double r3442004 = y_re;
        double r3442005 = r3442003 * r3442004;
        double r3442006 = x_im;
        double r3442007 = y_im;
        double r3442008 = r3442006 * r3442007;
        double r3442009 = r3442005 + r3442008;
        double r3442010 = r3442004 * r3442004;
        double r3442011 = r3442007 * r3442007;
        double r3442012 = r3442010 + r3442011;
        double r3442013 = r3442009 / r3442012;
        return r3442013;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3442014 = x_im;
        double r3442015 = y_im;
        double r3442016 = r3442014 * r3442015;
        double r3442017 = x_re;
        double r3442018 = y_re;
        double r3442019 = r3442017 * r3442018;
        double r3442020 = r3442016 + r3442019;
        double r3442021 = r3442018 * r3442018;
        double r3442022 = r3442015 * r3442015;
        double r3442023 = r3442021 + r3442022;
        double r3442024 = sqrt(r3442023);
        double r3442025 = r3442020 / r3442024;
        double r3442026 = r3442025 / r3442024;
        return r3442026;
}

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.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-sqrt26.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*26.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. Final simplification26.7

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