Average Error: 25.9 → 25.9
Time: 14.5s
Precision: 64
\[\frac{x.re \cdot y.re + x.im \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{x.im \cdot y.im + x.re \cdot y.re}{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{x.im \cdot y.im + x.re \cdot y.re}{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 r1977695 = x_re;
        double r1977696 = y_re;
        double r1977697 = r1977695 * r1977696;
        double r1977698 = x_im;
        double r1977699 = y_im;
        double r1977700 = r1977698 * r1977699;
        double r1977701 = r1977697 + r1977700;
        double r1977702 = r1977696 * r1977696;
        double r1977703 = r1977699 * r1977699;
        double r1977704 = r1977702 + r1977703;
        double r1977705 = r1977701 / r1977704;
        return r1977705;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1977706 = x_im;
        double r1977707 = y_im;
        double r1977708 = r1977706 * r1977707;
        double r1977709 = x_re;
        double r1977710 = y_re;
        double r1977711 = r1977709 * r1977710;
        double r1977712 = r1977708 + r1977711;
        double r1977713 = r1977710 * r1977710;
        double r1977714 = r1977707 * r1977707;
        double r1977715 = r1977713 + r1977714;
        double r1977716 = r1977712 / r1977715;
        return r1977716;
}

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

    \[\leadsto \frac{x.im \cdot y.im + x.re \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im}\]

Reproduce

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