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 r58441 = x_re;
        double r58442 = y_re;
        double r58443 = r58441 * r58442;
        double r58444 = x_im;
        double r58445 = y_im;
        double r58446 = r58444 * r58445;
        double r58447 = r58443 - r58446;
        return r58447;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r58448 = x_re;
        double r58449 = y_re;
        double r58450 = r58448 * r58449;
        double r58451 = x_im;
        double r58452 = y_im;
        double r58453 = r58451 * r58452;
        double r58454 = r58450 - r58453;
        return r58454;
}

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