Average Error: 0.0 → 0.0
Time: 3.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 r74344 = x_re;
        double r74345 = y_re;
        double r74346 = r74344 * r74345;
        double r74347 = x_im;
        double r74348 = y_im;
        double r74349 = r74347 * r74348;
        double r74350 = r74346 - r74349;
        return r74350;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r74351 = x_re;
        double r74352 = y_re;
        double r74353 = r74351 * r74352;
        double r74354 = x_im;
        double r74355 = y_im;
        double r74356 = r74354 * r74355;
        double r74357 = r74353 - r74356;
        return r74357;
}

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