Average Error: 0.0 → 0.0
Time: 14.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 r2887748 = x_re;
        double r2887749 = y_re;
        double r2887750 = r2887748 * r2887749;
        double r2887751 = x_im;
        double r2887752 = y_im;
        double r2887753 = r2887751 * r2887752;
        double r2887754 = r2887750 - r2887753;
        return r2887754;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2887755 = x_re;
        double r2887756 = y_re;
        double r2887757 = r2887755 * r2887756;
        double r2887758 = x_im;
        double r2887759 = y_im;
        double r2887760 = r2887758 * r2887759;
        double r2887761 = r2887757 - r2887760;
        return r2887761;
}

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