Average Error: 0.0 → 0.0
Time: 7.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 r1522235 = x_re;
        double r1522236 = y_re;
        double r1522237 = r1522235 * r1522236;
        double r1522238 = x_im;
        double r1522239 = y_im;
        double r1522240 = r1522238 * r1522239;
        double r1522241 = r1522237 - r1522240;
        return r1522241;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1522242 = x_re;
        double r1522243 = y_re;
        double r1522244 = r1522242 * r1522243;
        double r1522245 = x_im;
        double r1522246 = y_im;
        double r1522247 = r1522245 * r1522246;
        double r1522248 = r1522244 - r1522247;
        return r1522248;
}

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