Average Error: 0.0 → 0.0
Time: 3.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 r1562276 = x_re;
        double r1562277 = y_re;
        double r1562278 = r1562276 * r1562277;
        double r1562279 = x_im;
        double r1562280 = y_im;
        double r1562281 = r1562279 * r1562280;
        double r1562282 = r1562278 - r1562281;
        return r1562282;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1562283 = x_re;
        double r1562284 = y_re;
        double r1562285 = r1562283 * r1562284;
        double r1562286 = x_im;
        double r1562287 = y_im;
        double r1562288 = r1562286 * r1562287;
        double r1562289 = r1562285 - r1562288;
        return r1562289;
}

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)))