Average Error: 0.0 → 0.0
Time: 3.7s
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 r42182 = x_re;
        double r42183 = y_re;
        double r42184 = r42182 * r42183;
        double r42185 = x_im;
        double r42186 = y_im;
        double r42187 = r42185 * r42186;
        double r42188 = r42184 - r42187;
        return r42188;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r42189 = x_re;
        double r42190 = y_re;
        double r42191 = r42189 * r42190;
        double r42192 = x_im;
        double r42193 = y_im;
        double r42194 = r42192 * r42193;
        double r42195 = r42191 - r42194;
        return r42195;
}

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