Average Error: 0.0 → 0.0
Time: 4.4s
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 r1021679 = x_re;
        double r1021680 = y_re;
        double r1021681 = r1021679 * r1021680;
        double r1021682 = x_im;
        double r1021683 = y_im;
        double r1021684 = r1021682 * r1021683;
        double r1021685 = r1021681 - r1021684;
        return r1021685;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1021686 = x_re;
        double r1021687 = y_re;
        double r1021688 = r1021686 * r1021687;
        double r1021689 = x_im;
        double r1021690 = y_im;
        double r1021691 = r1021689 * r1021690;
        double r1021692 = r1021688 - r1021691;
        return r1021692;
}

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