Average Error: 0.0 → 0.0
Time: 2.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 r57768 = x_re;
        double r57769 = y_re;
        double r57770 = r57768 * r57769;
        double r57771 = x_im;
        double r57772 = y_im;
        double r57773 = r57771 * r57772;
        double r57774 = r57770 - r57773;
        return r57774;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r57775 = x_re;
        double r57776 = y_re;
        double r57777 = r57775 * r57776;
        double r57778 = x_im;
        double r57779 = y_im;
        double r57780 = r57778 * r57779;
        double r57781 = r57777 - r57780;
        return r57781;
}

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