Average Error: 0.0 → 0.0
Time: 1.6s
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 r61286 = x_re;
        double r61287 = y_re;
        double r61288 = r61286 * r61287;
        double r61289 = x_im;
        double r61290 = y_im;
        double r61291 = r61289 * r61290;
        double r61292 = r61288 - r61291;
        return r61292;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r61293 = x_re;
        double r61294 = y_re;
        double r61295 = r61293 * r61294;
        double r61296 = x_im;
        double r61297 = y_im;
        double r61298 = r61296 * r61297;
        double r61299 = r61295 - r61298;
        return r61299;
}

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