Average Error: 0.0 → 0.0
Time: 7.0s
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 r106573 = x_re;
        double r106574 = y_re;
        double r106575 = r106573 * r106574;
        double r106576 = x_im;
        double r106577 = y_im;
        double r106578 = r106576 * r106577;
        double r106579 = r106575 - r106578;
        return r106579;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r106580 = x_re;
        double r106581 = y_re;
        double r106582 = r106580 * r106581;
        double r106583 = x_im;
        double r106584 = y_im;
        double r106585 = r106583 * r106584;
        double r106586 = r106582 - r106585;
        return r106586;
}

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