Average Error: 0.0 → 0.0
Time: 1.6s
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 r46452 = x_re;
        double r46453 = y_im;
        double r46454 = r46452 * r46453;
        double r46455 = x_im;
        double r46456 = y_re;
        double r46457 = r46455 * r46456;
        double r46458 = r46454 + r46457;
        return r46458;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r46459 = x_re;
        double r46460 = y_im;
        double r46461 = r46459 * r46460;
        double r46462 = x_im;
        double r46463 = y_re;
        double r46464 = r46462 * r46463;
        double r46465 = r46461 + r46464;
        return r46465;
}

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