Average Error: 0.0 → 0.0
Time: 6.0s
Precision: 64
\[x.re \cdot y.im + x.im \cdot y.re\]
\[x.re \cdot y.im + x.im \cdot y.re\]
x.re \cdot y.im + x.im \cdot y.re
x.re \cdot y.im + x.im \cdot y.re
double f(double x_re, double x_im, double y_re, double y_im) {
        double r40287 = x_re;
        double r40288 = y_im;
        double r40289 = r40287 * r40288;
        double r40290 = x_im;
        double r40291 = y_re;
        double r40292 = r40290 * r40291;
        double r40293 = r40289 + r40292;
        return r40293;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r40294 = x_re;
        double r40295 = y_im;
        double r40296 = r40294 * r40295;
        double r40297 = x_im;
        double r40298 = y_re;
        double r40299 = r40297 * r40298;
        double r40300 = r40296 + r40299;
        return r40300;
}

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 0.0

    \[x.re \cdot y.im + x.im \cdot y.re\]
  2. Final simplification0.0

    \[\leadsto x.re \cdot y.im + x.im \cdot y.re\]

Reproduce

herbie shell --seed 2019303 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, imaginary part"
  :precision binary64
  (+ (* x.re y.im) (* x.im y.re)))