Average Error: 26.5 → 26.5
Time: 10.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{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 - x.re \cdot y.im}{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}
double f(double x_re, double x_im, double y_re, double y_im) {
        double r46811 = x_im;
        double r46812 = y_re;
        double r46813 = r46811 * r46812;
        double r46814 = x_re;
        double r46815 = y_im;
        double r46816 = r46814 * r46815;
        double r46817 = r46813 - r46816;
        double r46818 = r46812 * r46812;
        double r46819 = r46815 * r46815;
        double r46820 = r46818 + r46819;
        double r46821 = r46817 / r46820;
        return r46821;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r46822 = x_im;
        double r46823 = y_re;
        double r46824 = r46822 * r46823;
        double r46825 = x_re;
        double r46826 = y_im;
        double r46827 = r46825 * r46826;
        double r46828 = r46824 - r46827;
        double r46829 = r46823 * r46823;
        double r46830 = r46826 * r46826;
        double r46831 = r46829 + r46830;
        double r46832 = r46828 / r46831;
        return r46832;
}

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

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

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

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

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

Reproduce

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