Average Error: 0.0 → 0.0
Time: 12.0s
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 r1187216 = x_re;
        double r1187217 = y_re;
        double r1187218 = r1187216 * r1187217;
        double r1187219 = x_im;
        double r1187220 = y_im;
        double r1187221 = r1187219 * r1187220;
        double r1187222 = r1187218 - r1187221;
        return r1187222;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1187223 = x_re;
        double r1187224 = y_re;
        double r1187225 = r1187223 * r1187224;
        double r1187226 = x_im;
        double r1187227 = y_im;
        double r1187228 = r1187226 * r1187227;
        double r1187229 = r1187225 - r1187228;
        return r1187229;
}

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