Average Error: 0.0 → 0.0
Time: 2.2s
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 r40757 = x_re;
        double r40758 = y_re;
        double r40759 = r40757 * r40758;
        double r40760 = x_im;
        double r40761 = y_im;
        double r40762 = r40760 * r40761;
        double r40763 = r40759 - r40762;
        return r40763;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r40764 = x_re;
        double r40765 = y_re;
        double r40766 = r40764 * r40765;
        double r40767 = x_im;
        double r40768 = y_im;
        double r40769 = r40767 * r40768;
        double r40770 = r40766 - r40769;
        return r40770;
}

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