Average Error: 0.0 → 0.0
Time: 7.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 r1511085 = x_re;
        double r1511086 = y_re;
        double r1511087 = r1511085 * r1511086;
        double r1511088 = x_im;
        double r1511089 = y_im;
        double r1511090 = r1511088 * r1511089;
        double r1511091 = r1511087 - r1511090;
        return r1511091;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1511092 = x_re;
        double r1511093 = y_re;
        double r1511094 = r1511092 * r1511093;
        double r1511095 = x_im;
        double r1511096 = y_im;
        double r1511097 = r1511095 * r1511096;
        double r1511098 = r1511094 - r1511097;
        return r1511098;
}

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