Average Error: 0.0 → 0.0
Time: 3.8s
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 r1726315 = x_re;
        double r1726316 = y_re;
        double r1726317 = r1726315 * r1726316;
        double r1726318 = x_im;
        double r1726319 = y_im;
        double r1726320 = r1726318 * r1726319;
        double r1726321 = r1726317 - r1726320;
        return r1726321;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r1726322 = x_re;
        double r1726323 = y_re;
        double r1726324 = r1726322 * r1726323;
        double r1726325 = x_im;
        double r1726326 = y_im;
        double r1726327 = r1726325 * r1726326;
        double r1726328 = r1726324 - r1726327;
        return r1726328;
}

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