Average Error: 0.0 → 0.0
Time: 6.4s
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 r327 = x_re;
        double r328 = y_re;
        double r329 = r327 * r328;
        double r330 = x_im;
        double r331 = y_im;
        double r332 = r330 * r331;
        double r333 = r329 - r332;
        return r333;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r334 = x_re;
        double r335 = y_re;
        double r336 = r334 * r335;
        double r337 = x_im;
        double r338 = y_im;
        double r339 = r337 * r338;
        double r340 = r336 - r339;
        return r340;
}

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