Average Error: 0.0 → 0.0
Time: 2.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 r88569 = x_re;
        double r88570 = y_im;
        double r88571 = r88569 * r88570;
        double r88572 = x_im;
        double r88573 = y_re;
        double r88574 = r88572 * r88573;
        double r88575 = r88571 + r88574;
        return r88575;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r88576 = x_re;
        double r88577 = y_im;
        double r88578 = r88576 * r88577;
        double r88579 = x_im;
        double r88580 = y_re;
        double r88581 = r88579 * r88580;
        double r88582 = r88578 + r88581;
        return r88582;
}

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