Average Error: 27.0 → 26.9
Time: 15.2s
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 r2627966 = x_im;
        double r2627967 = y_re;
        double r2627968 = r2627966 * r2627967;
        double r2627969 = x_re;
        double r2627970 = y_im;
        double r2627971 = r2627969 * r2627970;
        double r2627972 = r2627968 - r2627971;
        double r2627973 = r2627967 * r2627967;
        double r2627974 = r2627970 * r2627970;
        double r2627975 = r2627973 + r2627974;
        double r2627976 = r2627972 / r2627975;
        return r2627976;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2627977 = x_im;
        double r2627978 = y_re;
        double r2627979 = r2627977 * r2627978;
        double r2627980 = x_re;
        double r2627981 = y_im;
        double r2627982 = r2627980 * r2627981;
        double r2627983 = r2627979 - r2627982;
        double r2627984 = r2627978 * r2627978;
        double r2627985 = r2627981 * r2627981;
        double r2627986 = r2627984 + r2627985;
        double r2627987 = sqrt(r2627986);
        double r2627988 = r2627983 / r2627987;
        double r2627989 = r2627988 / r2627987;
        return r2627989;
}

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 27.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-sqrt27.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.9

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

    \[\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 2019171 +o rules:numerics
(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))))