Average Error: 0.0 → 0.0
Time: 10.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 r2693859 = x_re;
        double r2693860 = y_re;
        double r2693861 = r2693859 * r2693860;
        double r2693862 = x_im;
        double r2693863 = y_im;
        double r2693864 = r2693862 * r2693863;
        double r2693865 = r2693861 - r2693864;
        return r2693865;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r2693866 = x_re;
        double r2693867 = y_re;
        double r2693868 = r2693866 * r2693867;
        double r2693869 = x_im;
        double r2693870 = y_im;
        double r2693871 = r2693869 * r2693870;
        double r2693872 = r2693868 - r2693871;
        return r2693872;
}

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