Average Error: 0.0 → 0.0
Time: 1.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 r759582 = x_re;
        double r759583 = y_re;
        double r759584 = r759582 * r759583;
        double r759585 = x_im;
        double r759586 = y_im;
        double r759587 = r759585 * r759586;
        double r759588 = r759584 - r759587;
        return r759588;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r759589 = x_re;
        double r759590 = y_re;
        double r759591 = r759589 * r759590;
        double r759592 = x_im;
        double r759593 = y_im;
        double r759594 = r759592 * r759593;
        double r759595 = r759591 - r759594;
        return r759595;
}

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