Average Error: 25.9 → 25.8
Time: 3.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{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 r64975 = x_re;
        double r64976 = y_re;
        double r64977 = r64975 * r64976;
        double r64978 = x_im;
        double r64979 = y_im;
        double r64980 = r64978 * r64979;
        double r64981 = r64977 + r64980;
        double r64982 = r64976 * r64976;
        double r64983 = r64979 * r64979;
        double r64984 = r64982 + r64983;
        double r64985 = r64981 / r64984;
        return r64985;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r64986 = x_re;
        double r64987 = y_re;
        double r64988 = r64986 * r64987;
        double r64989 = x_im;
        double r64990 = y_im;
        double r64991 = r64989 * r64990;
        double r64992 = r64988 + r64991;
        double r64993 = r64987 * r64987;
        double r64994 = r64990 * r64990;
        double r64995 = r64993 + r64994;
        double r64996 = sqrt(r64995);
        double r64997 = r64992 / r64996;
        double r64998 = r64997 / r64996;
        return r64998;
}

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

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

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

    \[\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 simplification25.8

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