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 r3630178 = x_re;
        double r3630179 = y_re;
        double r3630180 = r3630178 * r3630179;
        double r3630181 = x_im;
        double r3630182 = y_im;
        double r3630183 = r3630181 * r3630182;
        double r3630184 = r3630180 - r3630183;
        return r3630184;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r3630185 = x_re;
        double r3630186 = y_re;
        double r3630187 = r3630185 * r3630186;
        double r3630188 = x_im;
        double r3630189 = y_im;
        double r3630190 = r3630188 * r3630189;
        double r3630191 = r3630187 - r3630190;
        return r3630191;
}

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