Average Error: 25.1 → 25.0
Time: 19.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{y.re \cdot x.im - 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{y.re \cdot x.im - 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 r3677118 = x_im;
        double r3677119 = y_re;
        double r3677120 = r3677118 * r3677119;
        double r3677121 = x_re;
        double r3677122 = y_im;
        double r3677123 = r3677121 * r3677122;
        double r3677124 = r3677120 - r3677123;
        double r3677125 = r3677119 * r3677119;
        double r3677126 = r3677122 * r3677122;
        double r3677127 = r3677125 + r3677126;
        double r3677128 = r3677124 / r3677127;
        return r3677128;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3677129 = y_re;
        double r3677130 = x_im;
        double r3677131 = r3677129 * r3677130;
        double r3677132 = x_re;
        double r3677133 = y_im;
        double r3677134 = r3677132 * r3677133;
        double r3677135 = r3677131 - r3677134;
        double r3677136 = r3677129 * r3677129;
        double r3677137 = r3677133 * r3677133;
        double r3677138 = r3677136 + r3677137;
        double r3677139 = sqrt(r3677138);
        double r3677140 = r3677135 / r3677139;
        double r3677141 = r3677140 / r3677139;
        return r3677141;
}

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.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-sqrt25.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*25.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. Using strategy rm
  6. Applied div-inv25.1

    \[\leadsto \frac{\color{blue}{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot \frac{1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Using strategy rm
  8. Applied associate-*r/25.0

    \[\leadsto \frac{\color{blue}{\frac{\left(x.im \cdot y.re - x.re \cdot y.im\right) \cdot 1}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  9. Simplified25.0

    \[\leadsto \frac{\frac{\color{blue}{y.re \cdot x.im - 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}}\]
  10. Final simplification25.0

    \[\leadsto \frac{\frac{y.re \cdot x.im - 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 2019158 
(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))))