Average Error: 0.0 → 0.0
Time: 560.0ms
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 r44888 = x_re;
        double r44889 = y_re;
        double r44890 = r44888 * r44889;
        double r44891 = x_im;
        double r44892 = y_im;
        double r44893 = r44891 * r44892;
        double r44894 = r44890 - r44893;
        return r44894;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r44895 = x_re;
        double r44896 = y_re;
        double r44897 = r44895 * r44896;
        double r44898 = x_im;
        double r44899 = y_im;
        double r44900 = r44898 * r44899;
        double r44901 = r44897 - r44900;
        return r44901;
}

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