Average Error: 0.0 → 0.0
Time: 2.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 r55045 = x_re;
        double r55046 = y_re;
        double r55047 = r55045 * r55046;
        double r55048 = x_im;
        double r55049 = y_im;
        double r55050 = r55048 * r55049;
        double r55051 = r55047 - r55050;
        return r55051;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r55052 = x_re;
        double r55053 = y_re;
        double r55054 = r55052 * r55053;
        double r55055 = x_im;
        double r55056 = y_im;
        double r55057 = r55055 * r55056;
        double r55058 = r55054 - r55057;
        return r55058;
}

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