Average Error: 0.0 → 0.0
Time: 15.9s
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 r38174 = x_re;
        double r38175 = y_re;
        double r38176 = r38174 * r38175;
        double r38177 = x_im;
        double r38178 = y_im;
        double r38179 = r38177 * r38178;
        double r38180 = r38176 - r38179;
        return r38180;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r38181 = x_re;
        double r38182 = y_re;
        double r38183 = r38181 * r38182;
        double r38184 = x_im;
        double r38185 = y_im;
        double r38186 = r38184 * r38185;
        double r38187 = r38183 - r38186;
        return r38187;
}

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