Average Error: 0.0 → 0.0
Time: 7.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 r1370276 = x_re;
        double r1370277 = y_re;
        double r1370278 = r1370276 * r1370277;
        double r1370279 = x_im;
        double r1370280 = y_im;
        double r1370281 = r1370279 * r1370280;
        double r1370282 = r1370278 - r1370281;
        return r1370282;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1370283 = x_re;
        double r1370284 = y_re;
        double r1370285 = r1370283 * r1370284;
        double r1370286 = x_im;
        double r1370287 = y_im;
        double r1370288 = r1370286 * r1370287;
        double r1370289 = r1370285 - r1370288;
        return r1370289;
}

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