Average Error: 0.0 → 0.0
Time: 6.9s
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 r91000 = x_re;
        double r91001 = y_re;
        double r91002 = r91000 * r91001;
        double r91003 = x_im;
        double r91004 = y_im;
        double r91005 = r91003 * r91004;
        double r91006 = r91002 - r91005;
        return r91006;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r91007 = x_re;
        double r91008 = y_re;
        double r91009 = r91007 * r91008;
        double r91010 = x_im;
        double r91011 = y_im;
        double r91012 = r91010 * r91011;
        double r91013 = r91009 - r91012;
        return r91013;
}

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