Average Error: 0.0 → 0.0
Time: 2.8s
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 r29036 = x_re;
        double r29037 = y_re;
        double r29038 = r29036 * r29037;
        double r29039 = x_im;
        double r29040 = y_im;
        double r29041 = r29039 * r29040;
        double r29042 = r29038 - r29041;
        return r29042;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r29043 = x_re;
        double r29044 = y_re;
        double r29045 = r29043 * r29044;
        double r29046 = x_im;
        double r29047 = y_im;
        double r29048 = r29046 * r29047;
        double r29049 = r29045 - r29048;
        return r29049;
}

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