Average Error: 0.0 → 0.0
Time: 45.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 r7769710 = x_re;
        double r7769711 = y_re;
        double r7769712 = r7769710 * r7769711;
        double r7769713 = x_im;
        double r7769714 = y_im;
        double r7769715 = r7769713 * r7769714;
        double r7769716 = r7769712 - r7769715;
        return r7769716;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r7769717 = x_re;
        double r7769718 = y_re;
        double r7769719 = r7769717 * r7769718;
        double r7769720 = x_im;
        double r7769721 = y_im;
        double r7769722 = r7769720 * r7769721;
        double r7769723 = r7769719 - r7769722;
        return r7769723;
}

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