Average Error: 25.6 → 25.6
Time: 14.6s
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{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\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 r2697965 = x_re;
        double r2697966 = y_re;
        double r2697967 = r2697965 * r2697966;
        double r2697968 = x_im;
        double r2697969 = y_im;
        double r2697970 = r2697968 * r2697969;
        double r2697971 = r2697967 + r2697970;
        double r2697972 = r2697966 * r2697966;
        double r2697973 = r2697969 * r2697969;
        double r2697974 = r2697972 + r2697973;
        double r2697975 = r2697971 / r2697974;
        return r2697975;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2697976 = 1.0;
        double r2697977 = y_re;
        double r2697978 = r2697977 * r2697977;
        double r2697979 = y_im;
        double r2697980 = r2697979 * r2697979;
        double r2697981 = r2697978 + r2697980;
        double r2697982 = sqrt(r2697981);
        double r2697983 = r2697976 / r2697982;
        double r2697984 = x_im;
        double r2697985 = r2697984 * r2697979;
        double r2697986 = x_re;
        double r2697987 = r2697986 * r2697977;
        double r2697988 = r2697985 + r2697987;
        double r2697989 = r2697983 * r2697988;
        double r2697990 = r2697989 / r2697982;
        return r2697990;
}

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.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. Using strategy rm
  6. Applied div-inv25.6

    \[\leadsto \frac{\color{blue}{\left(x.re \cdot y.re + x.im \cdot y.im\right) \cdot \frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Final simplification25.6

    \[\leadsto \frac{\frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}} \cdot \left(x.im \cdot y.im + x.re \cdot y.re\right)}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]

Reproduce

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