Average Error: 25.9 → 25.8
Time: 4.2s
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 r126959 = x_re;
        double r126960 = y_re;
        double r126961 = r126959 * r126960;
        double r126962 = x_im;
        double r126963 = y_im;
        double r126964 = r126962 * r126963;
        double r126965 = r126961 + r126964;
        double r126966 = r126960 * r126960;
        double r126967 = r126963 * r126963;
        double r126968 = r126966 + r126967;
        double r126969 = r126965 / r126968;
        return r126969;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r126970 = x_re;
        double r126971 = y_re;
        double r126972 = r126970 * r126971;
        double r126973 = x_im;
        double r126974 = y_im;
        double r126975 = r126973 * r126974;
        double r126976 = r126972 + r126975;
        double r126977 = r126971 * r126971;
        double r126978 = r126974 * r126974;
        double r126979 = r126977 + r126978;
        double r126980 = sqrt(r126979);
        double r126981 = r126976 / r126980;
        double r126982 = r126981 / r126980;
        return r126982;
}

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 2020003 
(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))))