Average Error: 26.9 → 26.9
Time: 12.3s
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.re \cdot y.re + x.im \cdot y.im}{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.re \cdot y.re + x.im \cdot y.im}{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 r61592 = x_re;
        double r61593 = y_re;
        double r61594 = r61592 * r61593;
        double r61595 = x_im;
        double r61596 = y_im;
        double r61597 = r61595 * r61596;
        double r61598 = r61594 + r61597;
        double r61599 = r61593 * r61593;
        double r61600 = r61596 * r61596;
        double r61601 = r61599 + r61600;
        double r61602 = r61598 / r61601;
        return r61602;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r61603 = x_re;
        double r61604 = y_re;
        double r61605 = r61603 * r61604;
        double r61606 = x_im;
        double r61607 = y_im;
        double r61608 = r61606 * r61607;
        double r61609 = r61605 + r61608;
        double r61610 = r61604 * r61604;
        double r61611 = r61607 * r61607;
        double r61612 = r61610 + r61611;
        double r61613 = r61609 / r61612;
        return r61613;
}

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.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-sqrt26.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*26.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 simplification26.9

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

Reproduce

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