Average Error: 0.0 → 0.0
Time: 3.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 r23748 = x_re;
        double r23749 = y_re;
        double r23750 = r23748 * r23749;
        double r23751 = x_im;
        double r23752 = y_im;
        double r23753 = r23751 * r23752;
        double r23754 = r23750 - r23753;
        return r23754;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r23755 = x_re;
        double r23756 = y_re;
        double r23757 = r23755 * r23756;
        double r23758 = x_im;
        double r23759 = y_im;
        double r23760 = r23758 * r23759;
        double r23761 = r23757 - r23760;
        return r23761;
}

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