Average Error: 0.0 → 0.0
Time: 30.3s
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 r2425037 = x_re;
        double r2425038 = y_re;
        double r2425039 = r2425037 * r2425038;
        double r2425040 = x_im;
        double r2425041 = y_im;
        double r2425042 = r2425040 * r2425041;
        double r2425043 = r2425039 - r2425042;
        return r2425043;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2425044 = x_re;
        double r2425045 = y_re;
        double r2425046 = r2425044 * r2425045;
        double r2425047 = x_im;
        double r2425048 = y_im;
        double r2425049 = r2425047 * r2425048;
        double r2425050 = r2425046 - r2425049;
        return r2425050;
}

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