Average Error: 0.0 → 0.0
Time: 3.5s
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 r39384 = x_re;
        double r39385 = y_re;
        double r39386 = r39384 * r39385;
        double r39387 = x_im;
        double r39388 = y_im;
        double r39389 = r39387 * r39388;
        double r39390 = r39386 - r39389;
        return r39390;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r39391 = x_re;
        double r39392 = y_re;
        double r39393 = r39391 * r39392;
        double r39394 = x_im;
        double r39395 = y_im;
        double r39396 = r39394 * r39395;
        double r39397 = r39393 - r39396;
        return r39397;
}

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