Average Error: 26.4 → 26.4
Time: 3.3s
Precision: 64
\[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \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{x.re \cdot y.re + x.im \cdot y.im}{\sqrt{y.re \cdot y.re + y.im \cdot y.im} \cdot \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 r60081 = x_re;
        double r60082 = y_re;
        double r60083 = r60081 * r60082;
        double r60084 = x_im;
        double r60085 = y_im;
        double r60086 = r60084 * r60085;
        double r60087 = r60083 + r60086;
        double r60088 = r60082 * r60082;
        double r60089 = r60085 * r60085;
        double r60090 = r60088 + r60089;
        double r60091 = r60087 / r60090;
        return r60091;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r60092 = x_re;
        double r60093 = y_re;
        double r60094 = r60092 * r60093;
        double r60095 = x_im;
        double r60096 = y_im;
        double r60097 = r60095 * r60096;
        double r60098 = r60094 + r60097;
        double r60099 = r60093 * r60093;
        double r60100 = r60096 * r60096;
        double r60101 = r60099 + r60100;
        double r60102 = sqrt(r60101);
        double r60103 = r60102 * r60102;
        double r60104 = r60098 / r60103;
        return r60104;
}

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

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

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

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

Reproduce

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