Average Error: 0.0 → 0.0
Time: 4.6s
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 r48076 = x_re;
        double r48077 = y_re;
        double r48078 = r48076 * r48077;
        double r48079 = x_im;
        double r48080 = y_im;
        double r48081 = r48079 * r48080;
        double r48082 = r48078 - r48081;
        return r48082;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r48083 = x_re;
        double r48084 = y_re;
        double r48085 = r48083 * r48084;
        double r48086 = x_im;
        double r48087 = y_im;
        double r48088 = r48086 * r48087;
        double r48089 = r48085 - r48088;
        return r48089;
}

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