Average Error: 0.0 → 0.0
Time: 3.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 r64893 = x_re;
        double r64894 = y_re;
        double r64895 = r64893 * r64894;
        double r64896 = x_im;
        double r64897 = y_im;
        double r64898 = r64896 * r64897;
        double r64899 = r64895 - r64898;
        return r64899;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r64900 = x_re;
        double r64901 = y_re;
        double r64902 = r64900 * r64901;
        double r64903 = x_im;
        double r64904 = y_im;
        double r64905 = r64903 * r64904;
        double r64906 = r64902 - r64905;
        return r64906;
}

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