Average Error: 0.0 → 0.0
Time: 13.2s
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 r117288 = x_re;
        double r117289 = y_re;
        double r117290 = r117288 * r117289;
        double r117291 = x_im;
        double r117292 = y_im;
        double r117293 = r117291 * r117292;
        double r117294 = r117290 - r117293;
        return r117294;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r117295 = x_re;
        double r117296 = y_re;
        double r117297 = r117295 * r117296;
        double r117298 = x_im;
        double r117299 = y_im;
        double r117300 = r117298 * r117299;
        double r117301 = r117297 - r117300;
        return r117301;
}

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