Average Error: 0.0 → 0.0
Time: 10.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 r3485330 = x_re;
        double r3485331 = y_re;
        double r3485332 = r3485330 * r3485331;
        double r3485333 = x_im;
        double r3485334 = y_im;
        double r3485335 = r3485333 * r3485334;
        double r3485336 = r3485332 - r3485335;
        return r3485336;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3485337 = x_re;
        double r3485338 = y_re;
        double r3485339 = r3485337 * r3485338;
        double r3485340 = x_im;
        double r3485341 = y_im;
        double r3485342 = r3485340 * r3485341;
        double r3485343 = r3485339 - r3485342;
        return r3485343;
}

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