Average Error: 0.0 → 0.0
Time: 2.5m
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 r23212188 = x_re;
        double r23212189 = y_re;
        double r23212190 = r23212188 * r23212189;
        double r23212191 = x_im;
        double r23212192 = y_im;
        double r23212193 = r23212191 * r23212192;
        double r23212194 = r23212190 - r23212193;
        return r23212194;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r23212195 = x_re;
        double r23212196 = y_re;
        double r23212197 = r23212195 * r23212196;
        double r23212198 = x_im;
        double r23212199 = y_im;
        double r23212200 = r23212198 * r23212199;
        double r23212201 = r23212197 - r23212200;
        return r23212201;
}

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