Average Error: 0.0 → 0.0
Time: 8.0s
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 r52713 = x_re;
        double r52714 = y_re;
        double r52715 = r52713 * r52714;
        double r52716 = x_im;
        double r52717 = y_im;
        double r52718 = r52716 * r52717;
        double r52719 = r52715 - r52718;
        return r52719;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r52720 = x_re;
        double r52721 = y_re;
        double r52722 = r52720 * r52721;
        double r52723 = x_im;
        double r52724 = y_im;
        double r52725 = r52723 * r52724;
        double r52726 = r52722 - r52725;
        return r52726;
}

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