Average Error: 0.0 → 0.0
Time: 3.1s
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 r29767 = x_re;
        double r29768 = y_re;
        double r29769 = r29767 * r29768;
        double r29770 = x_im;
        double r29771 = y_im;
        double r29772 = r29770 * r29771;
        double r29773 = r29769 - r29772;
        return r29773;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r29774 = x_re;
        double r29775 = y_re;
        double r29776 = r29774 * r29775;
        double r29777 = x_im;
        double r29778 = y_im;
        double r29779 = r29777 * r29778;
        double r29780 = r29776 - r29779;
        return r29780;
}

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