Average Error: 0.0 → 0.0
Time: 3.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 r2106178 = x_re;
        double r2106179 = y_re;
        double r2106180 = r2106178 * r2106179;
        double r2106181 = x_im;
        double r2106182 = y_im;
        double r2106183 = r2106181 * r2106182;
        double r2106184 = r2106180 - r2106183;
        return r2106184;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2106185 = x_re;
        double r2106186 = y_re;
        double r2106187 = r2106185 * r2106186;
        double r2106188 = x_im;
        double r2106189 = y_im;
        double r2106190 = r2106188 * r2106189;
        double r2106191 = r2106187 - r2106190;
        return r2106191;
}

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