Average Error: 0.0 → 0.0
Time: 7.9s
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 r50249 = x_re;
        double r50250 = y_re;
        double r50251 = r50249 * r50250;
        double r50252 = x_im;
        double r50253 = y_im;
        double r50254 = r50252 * r50253;
        double r50255 = r50251 - r50254;
        return r50255;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r50256 = x_re;
        double r50257 = y_re;
        double r50258 = r50256 * r50257;
        double r50259 = x_im;
        double r50260 = y_im;
        double r50261 = r50259 * r50260;
        double r50262 = r50258 - r50261;
        return r50262;
}

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