Average Error: 26.0 → 25.9
Time: 9.3s
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 r48649 = x_im;
        double r48650 = y_re;
        double r48651 = r48649 * r48650;
        double r48652 = x_re;
        double r48653 = y_im;
        double r48654 = r48652 * r48653;
        double r48655 = r48651 - r48654;
        double r48656 = r48650 * r48650;
        double r48657 = r48653 * r48653;
        double r48658 = r48656 + r48657;
        double r48659 = r48655 / r48658;
        return r48659;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r48660 = x_im;
        double r48661 = y_re;
        double r48662 = r48660 * r48661;
        double r48663 = x_re;
        double r48664 = y_im;
        double r48665 = r48663 * r48664;
        double r48666 = r48662 - r48665;
        double r48667 = r48661 * r48661;
        double r48668 = r48664 * r48664;
        double r48669 = r48667 + r48668;
        double r48670 = sqrt(r48669);
        double r48671 = r48666 / r48670;
        double r48672 = r48671 / r48670;
        return r48672;
}

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

    \[\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-sqrt26.0

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

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

    \[\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 2019350 
(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))))