Average Error: 25.4 → 25.3
Time: 16.8s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{\frac{x.im \cdot y.re - x.re \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.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{\frac{x.im \cdot y.re - x.re \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 r1700681 = x_im;
        double r1700682 = y_re;
        double r1700683 = r1700681 * r1700682;
        double r1700684 = x_re;
        double r1700685 = y_im;
        double r1700686 = r1700684 * r1700685;
        double r1700687 = r1700683 - r1700686;
        double r1700688 = r1700682 * r1700682;
        double r1700689 = r1700685 * r1700685;
        double r1700690 = r1700688 + r1700689;
        double r1700691 = r1700687 / r1700690;
        return r1700691;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1700692 = x_im;
        double r1700693 = y_re;
        double r1700694 = r1700692 * r1700693;
        double r1700695 = x_re;
        double r1700696 = y_im;
        double r1700697 = r1700695 * r1700696;
        double r1700698 = r1700694 - r1700697;
        double r1700699 = r1700693 * r1700693;
        double r1700700 = r1700696 * r1700696;
        double r1700701 = r1700699 + r1700700;
        double r1700702 = sqrt(r1700701);
        double r1700703 = r1700698 / r1700702;
        double r1700704 = r1700703 / r1700702;
        return r1700704;
}

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.4

    \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt25.4

    \[\leadsto \frac{x.im \cdot y.re - x.re \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.3

    \[\leadsto \color{blue}{\frac{\frac{x.im \cdot y.re - x.re \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.3

    \[\leadsto \frac{\frac{x.im \cdot y.re - x.re \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 2019134 
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))