Average Error: 26.0 → 26.0
Time: 15.0s
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 r57345 = x_im;
        double r57346 = y_re;
        double r57347 = r57345 * r57346;
        double r57348 = x_re;
        double r57349 = y_im;
        double r57350 = r57348 * r57349;
        double r57351 = r57347 - r57350;
        double r57352 = r57346 * r57346;
        double r57353 = r57349 * r57349;
        double r57354 = r57352 + r57353;
        double r57355 = r57351 / r57354;
        return r57355;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r57356 = x_im;
        double r57357 = y_re;
        double r57358 = r57356 * r57357;
        double r57359 = x_re;
        double r57360 = y_im;
        double r57361 = r57359 * r57360;
        double r57362 = r57358 - r57361;
        double r57363 = r57357 * r57357;
        double r57364 = r57360 * r57360;
        double r57365 = r57363 + r57364;
        double r57366 = sqrt(r57365);
        double r57367 = r57362 / r57366;
        double r57368 = r57367 / r57366;
        return r57368;
}

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*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 2019306 
(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))))