Average Error: 25.8 → 25.9
Time: 55.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{1}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im \cdot y.re - x.re \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{1}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im \cdot y.re - x.re \cdot y.im}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r3554295 = x_im;
        double r3554296 = y_re;
        double r3554297 = r3554295 * r3554296;
        double r3554298 = x_re;
        double r3554299 = y_im;
        double r3554300 = r3554298 * r3554299;
        double r3554301 = r3554297 - r3554300;
        double r3554302 = r3554296 * r3554296;
        double r3554303 = r3554299 * r3554299;
        double r3554304 = r3554302 + r3554303;
        double r3554305 = r3554301 / r3554304;
        return r3554305;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3554306 = 1.0;
        double r3554307 = y_re;
        double r3554308 = r3554307 * r3554307;
        double r3554309 = y_im;
        double r3554310 = r3554309 * r3554309;
        double r3554311 = r3554308 + r3554310;
        double r3554312 = x_im;
        double r3554313 = r3554312 * r3554307;
        double r3554314 = x_re;
        double r3554315 = r3554314 * r3554309;
        double r3554316 = r3554313 - r3554315;
        double r3554317 = r3554311 / r3554316;
        double r3554318 = r3554306 / r3554317;
        return r3554318;
}

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

    \[\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 *-un-lft-identity25.8

    \[\leadsto \frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{y.re \cdot y.re + y.im \cdot y.im}\]
  4. Applied associate-/l*25.9

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

    \[\leadsto \frac{1}{\frac{y.re \cdot y.re + y.im \cdot y.im}{x.im \cdot y.re - x.re \cdot y.im}}\]

Reproduce

herbie shell --seed 2019121 
(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))))