Average Error: 26.0 → 24.5
Time: 41.1s
Precision: 64
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} - \frac{x.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{y.im}}\]
\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}
\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} - \frac{x.re}{\frac{y.re \cdot y.re + y.im \cdot y.im}{y.im}}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r17099711 = x_im;
        double r17099712 = y_re;
        double r17099713 = r17099711 * r17099712;
        double r17099714 = x_re;
        double r17099715 = y_im;
        double r17099716 = r17099714 * r17099715;
        double r17099717 = r17099713 - r17099716;
        double r17099718 = r17099712 * r17099712;
        double r17099719 = r17099715 * r17099715;
        double r17099720 = r17099718 + r17099719;
        double r17099721 = r17099717 / r17099720;
        return r17099721;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r17099722 = x_im;
        double r17099723 = y_re;
        double r17099724 = r17099722 * r17099723;
        double r17099725 = r17099723 * r17099723;
        double r17099726 = y_im;
        double r17099727 = r17099726 * r17099726;
        double r17099728 = r17099725 + r17099727;
        double r17099729 = r17099724 / r17099728;
        double r17099730 = x_re;
        double r17099731 = r17099728 / r17099726;
        double r17099732 = r17099730 / r17099731;
        double r17099733 = r17099729 - r17099732;
        return r17099733;
}

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

    \[\leadsto \color{blue}{\frac{x.im \cdot y.re}{y.re \cdot y.re + y.im \cdot y.im} - \frac{x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}}\]
  4. Using strategy rm
  5. Applied associate-/l*24.5

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

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

Reproduce

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