Average Error: 26.1 → 26.0
Time: 3.9s
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.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}}\]
\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\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}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r57191 = x_re;
        double r57192 = y_re;
        double r57193 = r57191 * r57192;
        double r57194 = x_im;
        double r57195 = y_im;
        double r57196 = r57194 * r57195;
        double r57197 = r57193 + r57196;
        double r57198 = r57192 * r57192;
        double r57199 = r57195 * r57195;
        double r57200 = r57198 + r57199;
        double r57201 = r57197 / r57200;
        return r57201;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r57202 = x_re;
        double r57203 = y_re;
        double r57204 = r57202 * r57203;
        double r57205 = x_im;
        double r57206 = y_im;
        double r57207 = r57205 * r57206;
        double r57208 = r57204 + r57207;
        double r57209 = r57203 * r57203;
        double r57210 = r57206 * r57206;
        double r57211 = r57209 + r57210;
        double r57212 = sqrt(r57211);
        double r57213 = r57208 / r57212;
        double r57214 = r57213 / r57212;
        return r57214;
}

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

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

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

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

    \[\leadsto \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}}\]

Reproduce

herbie shell --seed 2020100 
(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))))