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 r1372359 = x_re;
        double r1372360 = y_re;
        double r1372361 = r1372359 * r1372360;
        double r1372362 = x_im;
        double r1372363 = y_im;
        double r1372364 = r1372362 * r1372363;
        double r1372365 = r1372361 - r1372364;
        return r1372365;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1372366 = x_re;
        double r1372367 = y_re;
        double r1372368 = r1372366 * r1372367;
        double r1372369 = x_im;
        double r1372370 = y_im;
        double r1372371 = r1372369 * r1372370;
        double r1372372 = r1372368 - r1372371;
        return r1372372;
}

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