Average Error: 0.0 → 0.0
Time: 10.9s
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 r100862 = x_re;
        double r100863 = y_im;
        double r100864 = r100862 * r100863;
        double r100865 = x_im;
        double r100866 = y_re;
        double r100867 = r100865 * r100866;
        double r100868 = r100864 + r100867;
        return r100868;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r100869 = x_re;
        double r100870 = y_im;
        double r100871 = r100869 * r100870;
        double r100872 = x_im;
        double r100873 = y_re;
        double r100874 = r100872 * r100873;
        double r100875 = r100871 + r100874;
        return r100875;
}

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