Average Error: 0.0 → 0.0
Time: 6.4s
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 r85347 = x_re;
        double r85348 = y_im;
        double r85349 = r85347 * r85348;
        double r85350 = x_im;
        double r85351 = y_re;
        double r85352 = r85350 * r85351;
        double r85353 = r85349 + r85352;
        return r85353;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r85354 = x_re;
        double r85355 = y_im;
        double r85356 = r85354 * r85355;
        double r85357 = x_im;
        double r85358 = y_re;
        double r85359 = r85357 * r85358;
        double r85360 = r85356 + r85359;
        return r85360;
}

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)))