Average Error: 25.9 → 25.9
Time: 16.4s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{x.im \cdot y.re - x.re \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 r38609 = x_im;
        double r38610 = y_re;
        double r38611 = r38609 * r38610;
        double r38612 = x_re;
        double r38613 = y_im;
        double r38614 = r38612 * r38613;
        double r38615 = r38611 - r38614;
        double r38616 = r38610 * r38610;
        double r38617 = r38613 * r38613;
        double r38618 = r38616 + r38617;
        double r38619 = r38615 / r38618;
        return r38619;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r38620 = x_im;
        double r38621 = y_re;
        double r38622 = r38620 * r38621;
        double r38623 = x_re;
        double r38624 = y_im;
        double r38625 = r38623 * r38624;
        double r38626 = r38622 - r38625;
        double r38627 = r38621 * r38621;
        double r38628 = r38624 * r38624;
        double r38629 = r38627 + r38628;
        double r38630 = r38626 / r38629;
        return r38630;
}

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.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Final simplification25.9

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

Reproduce

herbie shell --seed 2019326 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  :precision binary64
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))