Average Error: 0.0 → 0.0
Time: 6.4s
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 r1387611 = x_re;
        double r1387612 = y_re;
        double r1387613 = r1387611 * r1387612;
        double r1387614 = x_im;
        double r1387615 = y_im;
        double r1387616 = r1387614 * r1387615;
        double r1387617 = r1387613 - r1387616;
        return r1387617;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1387618 = x_re;
        double r1387619 = y_re;
        double r1387620 = r1387618 * r1387619;
        double r1387621 = x_im;
        double r1387622 = y_im;
        double r1387623 = r1387621 * r1387622;
        double r1387624 = r1387620 - r1387623;
        return r1387624;
}

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