Average Error: 0.0 → 0.0
Time: 3.8s
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 r118277 = x_re;
        double r118278 = y_re;
        double r118279 = r118277 * r118278;
        double r118280 = x_im;
        double r118281 = y_im;
        double r118282 = r118280 * r118281;
        double r118283 = r118279 - r118282;
        return r118283;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r118284 = x_re;
        double r118285 = y_re;
        double r118286 = r118284 * r118285;
        double r118287 = x_im;
        double r118288 = y_im;
        double r118289 = r118287 * r118288;
        double r118290 = r118286 - r118289;
        return r118290;
}

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