Average Error: 26.4 → 26.4
Time: 15.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{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{y.re \cdot x.im - y.im \cdot x.re}}}{\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 r2826533 = x_im;
        double r2826534 = y_re;
        double r2826535 = r2826533 * r2826534;
        double r2826536 = x_re;
        double r2826537 = y_im;
        double r2826538 = r2826536 * r2826537;
        double r2826539 = r2826535 - r2826538;
        double r2826540 = r2826534 * r2826534;
        double r2826541 = r2826537 * r2826537;
        double r2826542 = r2826540 + r2826541;
        double r2826543 = r2826539 / r2826542;
        return r2826543;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2826544 = 1.0;
        double r2826545 = y_re;
        double r2826546 = r2826545 * r2826545;
        double r2826547 = y_im;
        double r2826548 = r2826547 * r2826547;
        double r2826549 = r2826546 + r2826548;
        double r2826550 = sqrt(r2826549);
        double r2826551 = x_im;
        double r2826552 = r2826545 * r2826551;
        double r2826553 = x_re;
        double r2826554 = r2826547 * r2826553;
        double r2826555 = r2826552 - r2826554;
        double r2826556 = r2826550 / r2826555;
        double r2826557 = r2826544 / r2826556;
        double r2826558 = r2826557 / r2826550;
        return r2826558;
}

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

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

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

    \[\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 clear-num26.4

    \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}{x.im \cdot y.re - x.re \cdot y.im}}}}{\sqrt{y.re \cdot y.re + y.im \cdot y.im}}\]
  7. Final simplification26.4

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

Reproduce

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