Average Error: 26.5 → 26.5
Time: 4.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.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 r48944 = x_re;
        double r48945 = y_re;
        double r48946 = r48944 * r48945;
        double r48947 = x_im;
        double r48948 = y_im;
        double r48949 = r48947 * r48948;
        double r48950 = r48946 + r48949;
        double r48951 = r48945 * r48945;
        double r48952 = r48948 * r48948;
        double r48953 = r48951 + r48952;
        double r48954 = r48950 / r48953;
        return r48954;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r48955 = x_re;
        double r48956 = y_re;
        double r48957 = r48955 * r48956;
        double r48958 = x_im;
        double r48959 = y_im;
        double r48960 = r48958 * r48959;
        double r48961 = r48957 + r48960;
        double r48962 = r48956 * r48956;
        double r48963 = r48959 * r48959;
        double r48964 = r48962 + r48963;
        double r48965 = sqrt(r48964);
        double r48966 = r48961 / r48965;
        double r48967 = r48966 / r48965;
        return r48967;
}

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

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

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

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

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