Average Error: 0.0 → 0.0
Time: 3.7s
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 r23737 = x_re;
        double r23738 = y_re;
        double r23739 = r23737 * r23738;
        double r23740 = x_im;
        double r23741 = y_im;
        double r23742 = r23740 * r23741;
        double r23743 = r23739 - r23742;
        return r23743;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r23744 = x_re;
        double r23745 = y_re;
        double r23746 = r23744 * r23745;
        double r23747 = x_im;
        double r23748 = y_im;
        double r23749 = r23747 * r23748;
        double r23750 = r23746 - r23749;
        return r23750;
}

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)))