Average Error: 0.0 → 0.0
Time: 7.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 r64374 = x_re;
        double r64375 = y_im;
        double r64376 = r64374 * r64375;
        double r64377 = x_im;
        double r64378 = y_re;
        double r64379 = r64377 * r64378;
        double r64380 = r64376 + r64379;
        return r64380;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r64381 = x_re;
        double r64382 = y_im;
        double r64383 = r64381 * r64382;
        double r64384 = x_im;
        double r64385 = y_re;
        double r64386 = r64384 * r64385;
        double r64387 = r64383 + r64386;
        return r64387;
}

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