Average Error: 0.0 → 0.0
Time: 1.1s
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 r79036 = x_re;
        double r79037 = y_re;
        double r79038 = r79036 * r79037;
        double r79039 = x_im;
        double r79040 = y_im;
        double r79041 = r79039 * r79040;
        double r79042 = r79038 - r79041;
        return r79042;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r79043 = x_re;
        double r79044 = y_re;
        double r79045 = r79043 * r79044;
        double r79046 = x_im;
        double r79047 = y_im;
        double r79048 = r79046 * r79047;
        double r79049 = r79045 - r79048;
        return r79049;
}

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