Average Error: 0.0 → 0.0
Time: 3.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 r1913042 = x_re;
        double r1913043 = y_re;
        double r1913044 = r1913042 * r1913043;
        double r1913045 = x_im;
        double r1913046 = y_im;
        double r1913047 = r1913045 * r1913046;
        double r1913048 = r1913044 - r1913047;
        return r1913048;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1913049 = x_re;
        double r1913050 = y_re;
        double r1913051 = r1913049 * r1913050;
        double r1913052 = x_im;
        double r1913053 = y_im;
        double r1913054 = r1913052 * r1913053;
        double r1913055 = r1913051 - r1913054;
        return r1913055;
}

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