Average Error: 0.0 → 0.0
Time: 2.1s
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 r1536421 = x_re;
        double r1536422 = y_re;
        double r1536423 = r1536421 * r1536422;
        double r1536424 = x_im;
        double r1536425 = y_im;
        double r1536426 = r1536424 * r1536425;
        double r1536427 = r1536423 - r1536426;
        return r1536427;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1536428 = x_re;
        double r1536429 = y_re;
        double r1536430 = r1536428 * r1536429;
        double r1536431 = x_im;
        double r1536432 = y_im;
        double r1536433 = r1536431 * r1536432;
        double r1536434 = r1536430 - r1536433;
        return r1536434;
}

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