Average Error: 0.0 → 0.0
Time: 823.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 r34977 = x_re;
        double r34978 = y_re;
        double r34979 = r34977 * r34978;
        double r34980 = x_im;
        double r34981 = y_im;
        double r34982 = r34980 * r34981;
        double r34983 = r34979 - r34982;
        return r34983;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r34984 = x_re;
        double r34985 = y_re;
        double r34986 = r34984 * r34985;
        double r34987 = x_im;
        double r34988 = y_im;
        double r34989 = r34987 * r34988;
        double r34990 = r34986 - r34989;
        return r34990;
}

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