Average Error: 0.0 → 0.0
Time: 5.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 r42482 = x_re;
        double r42483 = y_im;
        double r42484 = r42482 * r42483;
        double r42485 = x_im;
        double r42486 = y_re;
        double r42487 = r42485 * r42486;
        double r42488 = r42484 + r42487;
        return r42488;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r42489 = x_re;
        double r42490 = y_im;
        double r42491 = r42489 * r42490;
        double r42492 = x_im;
        double r42493 = y_re;
        double r42494 = r42492 * r42493;
        double r42495 = r42491 + r42494;
        return r42495;
}

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. Simplified0.0

    \[\leadsto \color{blue}{x.im \cdot y.re + x.re \cdot y.im}\]
  3. Final simplification0.0

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

Reproduce

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