Average Error: 0.0 → 0.0
Time: 2.5s
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 r97787 = x_re;
        double r97788 = y_re;
        double r97789 = r97787 * r97788;
        double r97790 = x_im;
        double r97791 = y_im;
        double r97792 = r97790 * r97791;
        double r97793 = r97789 - r97792;
        return r97793;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r97794 = x_re;
        double r97795 = y_re;
        double r97796 = r97794 * r97795;
        double r97797 = x_im;
        double r97798 = y_im;
        double r97799 = r97797 * r97798;
        double r97800 = r97796 - r97799;
        return r97800;
}

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