Average Error: 0.0 → 0.0
Time: 1.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 r978026 = x_re;
        double r978027 = y_re;
        double r978028 = r978026 * r978027;
        double r978029 = x_im;
        double r978030 = y_im;
        double r978031 = r978029 * r978030;
        double r978032 = r978028 - r978031;
        return r978032;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r978033 = x_re;
        double r978034 = y_re;
        double r978035 = r978033 * r978034;
        double r978036 = x_im;
        double r978037 = y_im;
        double r978038 = r978036 * r978037;
        double r978039 = r978035 - r978038;
        return r978039;
}

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