Average Error: 25.5 → 25.5
Time: 28.5s
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{y.re \cdot x.im - y.im \cdot x.re}{\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{y.re \cdot x.im - y.im \cdot x.re}{\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 r2182660 = x_im;
        double r2182661 = y_re;
        double r2182662 = r2182660 * r2182661;
        double r2182663 = x_re;
        double r2182664 = y_im;
        double r2182665 = r2182663 * r2182664;
        double r2182666 = r2182662 - r2182665;
        double r2182667 = r2182661 * r2182661;
        double r2182668 = r2182664 * r2182664;
        double r2182669 = r2182667 + r2182668;
        double r2182670 = r2182666 / r2182669;
        return r2182670;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2182671 = y_re;
        double r2182672 = x_im;
        double r2182673 = r2182671 * r2182672;
        double r2182674 = y_im;
        double r2182675 = x_re;
        double r2182676 = r2182674 * r2182675;
        double r2182677 = r2182673 - r2182676;
        double r2182678 = r2182671 * r2182671;
        double r2182679 = r2182674 * r2182674;
        double r2182680 = r2182678 + r2182679;
        double r2182681 = sqrt(r2182680);
        double r2182682 = r2182677 / r2182681;
        double r2182683 = r2182682 / r2182681;
        return r2182683;
}

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

    \[\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.5

    \[\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.5

    \[\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. Taylor expanded around -inf 25.5

    \[\leadsto \frac{\frac{\color{blue}{y.re \cdot x.im - y.im \cdot x.re}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  6. Final simplification25.5

    \[\leadsto \frac{\frac{y.re \cdot x.im - y.im \cdot x.re}{\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 2019119 +o rules:numerics
(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))))