Average Error: 0.0 → 0.0
Time: 6.5s
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 r42084 = x_re;
        double r42085 = y_im;
        double r42086 = r42084 * r42085;
        double r42087 = x_im;
        double r42088 = y_re;
        double r42089 = r42087 * r42088;
        double r42090 = r42086 + r42089;
        return r42090;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r42091 = x_re;
        double r42092 = y_im;
        double r42093 = r42091 * r42092;
        double r42094 = x_im;
        double r42095 = y_re;
        double r42096 = r42094 * r42095;
        double r42097 = r42093 + r42096;
        return r42097;
}

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