Average Error: 0.0 → 0.0
Time: 2.8s
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 r109492 = x_re;
        double r109493 = y_im;
        double r109494 = r109492 * r109493;
        double r109495 = x_im;
        double r109496 = y_re;
        double r109497 = r109495 * r109496;
        double r109498 = r109494 + r109497;
        return r109498;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r109499 = x_re;
        double r109500 = y_im;
        double r109501 = r109499 * r109500;
        double r109502 = x_im;
        double r109503 = y_re;
        double r109504 = r109502 * r109503;
        double r109505 = r109501 + r109504;
        return r109505;
}

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 2019350 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, imaginary part"
  :precision binary64
  (+ (* x.re y.im) (* x.im y.re)))