Average Error: 0.0 → 0.0
Time: 1.5s
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 r99185 = x_re;
        double r99186 = y_re;
        double r99187 = r99185 * r99186;
        double r99188 = x_im;
        double r99189 = y_im;
        double r99190 = r99188 * r99189;
        double r99191 = r99187 - r99190;
        return r99191;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r99192 = x_re;
        double r99193 = y_re;
        double r99194 = r99192 * r99193;
        double r99195 = x_im;
        double r99196 = y_im;
        double r99197 = r99195 * r99196;
        double r99198 = r99194 - r99197;
        return r99198;
}

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