Average Error: 0.0 → 0.0
Time: 16.6s
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 r1617306 = x_re;
        double r1617307 = y_re;
        double r1617308 = r1617306 * r1617307;
        double r1617309 = x_im;
        double r1617310 = y_im;
        double r1617311 = r1617309 * r1617310;
        double r1617312 = r1617308 - r1617311;
        return r1617312;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1617313 = x_re;
        double r1617314 = y_re;
        double r1617315 = r1617313 * r1617314;
        double r1617316 = x_im;
        double r1617317 = y_im;
        double r1617318 = r1617316 * r1617317;
        double r1617319 = r1617315 - r1617318;
        return r1617319;
}

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