Average Error: 26.1 → 26.0
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{\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 r3829226 = x_im;
        double r3829227 = y_re;
        double r3829228 = r3829226 * r3829227;
        double r3829229 = x_re;
        double r3829230 = y_im;
        double r3829231 = r3829229 * r3829230;
        double r3829232 = r3829228 - r3829231;
        double r3829233 = r3829227 * r3829227;
        double r3829234 = r3829230 * r3829230;
        double r3829235 = r3829233 + r3829234;
        double r3829236 = r3829232 / r3829235;
        return r3829236;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3829237 = x_im;
        double r3829238 = y_re;
        double r3829239 = r3829237 * r3829238;
        double r3829240 = x_re;
        double r3829241 = y_im;
        double r3829242 = r3829240 * r3829241;
        double r3829243 = r3829239 - r3829242;
        double r3829244 = r3829238 * r3829238;
        double r3829245 = r3829241 * r3829241;
        double r3829246 = r3829244 + r3829245;
        double r3829247 = sqrt(r3829246);
        double r3829248 = r3829243 / r3829247;
        double r3829249 = r3829248 / r3829247;
        return r3829249;
}

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

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

    \[\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*26.0

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

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