Average Error: 25.9 → 25.9
Time: 16.6s
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 r45625 = x_im;
        double r45626 = y_re;
        double r45627 = r45625 * r45626;
        double r45628 = x_re;
        double r45629 = y_im;
        double r45630 = r45628 * r45629;
        double r45631 = r45627 - r45630;
        double r45632 = r45626 * r45626;
        double r45633 = r45629 * r45629;
        double r45634 = r45632 + r45633;
        double r45635 = r45631 / r45634;
        return r45635;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r45636 = x_im;
        double r45637 = y_re;
        double r45638 = r45636 * r45637;
        double r45639 = x_re;
        double r45640 = y_im;
        double r45641 = r45639 * r45640;
        double r45642 = r45638 - r45641;
        double r45643 = r45637 * r45637;
        double r45644 = r45640 * r45640;
        double r45645 = r45643 + r45644;
        double r45646 = r45642 / r45645;
        return r45646;
}

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