Average Error: 0.0 → 0.0
Time: 3.2s
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 r94436 = x_re;
        double r94437 = y_re;
        double r94438 = r94436 * r94437;
        double r94439 = x_im;
        double r94440 = y_im;
        double r94441 = r94439 * r94440;
        double r94442 = r94438 - r94441;
        return r94442;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r94443 = x_re;
        double r94444 = y_re;
        double r94445 = r94443 * r94444;
        double r94446 = x_im;
        double r94447 = y_im;
        double r94448 = r94446 * r94447;
        double r94449 = r94445 - r94448;
        return r94449;
}

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)))