Average Error: 0.0 → 0.0
Time: 3.1s
Precision: 64
\[x.re \cdot y.re - x.im \cdot y.im\]
\[x.re \cdot y.re - x.im \cdot y.im\]
x.re \cdot y.re - x.im \cdot y.im
x.re \cdot y.re - x.im \cdot y.im
double f(double x_re, double x_im, double y_re, double y_im) {
        double r2052371 = x_re;
        double r2052372 = y_re;
        double r2052373 = r2052371 * r2052372;
        double r2052374 = x_im;
        double r2052375 = y_im;
        double r2052376 = r2052374 * r2052375;
        double r2052377 = r2052373 - r2052376;
        return r2052377;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2052378 = x_re;
        double r2052379 = y_re;
        double r2052380 = r2052378 * r2052379;
        double r2052381 = x_im;
        double r2052382 = y_im;
        double r2052383 = r2052381 * r2052382;
        double r2052384 = r2052380 - r2052383;
        return r2052384;
}

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.re - x.im \cdot y.im\]
  2. Final simplification0.0

    \[\leadsto x.re \cdot y.re - x.im \cdot y.im\]

Reproduce

herbie shell --seed 2019168 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, real part"
  (- (* x.re y.re) (* x.im y.im)))