Average Error: 0.0 → 0.0
Time: 7.1s
Precision: 64
\[x.re \cdot y.im + x.im \cdot y.re\]
\[x.im \cdot y.re + x.re \cdot y.im\]
x.re \cdot y.im + x.im \cdot y.re
x.im \cdot y.re + x.re \cdot y.im
double f(double x_re, double x_im, double y_re, double y_im) {
        double r25491 = x_re;
        double r25492 = y_im;
        double r25493 = r25491 * r25492;
        double r25494 = x_im;
        double r25495 = y_re;
        double r25496 = r25494 * r25495;
        double r25497 = r25493 + r25496;
        return r25497;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r25498 = x_im;
        double r25499 = y_re;
        double r25500 = r25498 * r25499;
        double r25501 = x_re;
        double r25502 = y_im;
        double r25503 = r25501 * r25502;
        double r25504 = r25500 + r25503;
        return r25504;
}

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.im \cdot y.re + x.re \cdot y.im\]

Reproduce

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