Average Error: 0.0 → 0.0
Time: 1.5s
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 r91461 = x_re;
        double r91462 = y_re;
        double r91463 = r91461 * r91462;
        double r91464 = x_im;
        double r91465 = y_im;
        double r91466 = r91464 * r91465;
        double r91467 = r91463 - r91466;
        return r91467;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r91468 = x_re;
        double r91469 = y_re;
        double r91470 = r91468 * r91469;
        double r91471 = x_im;
        double r91472 = y_im;
        double r91473 = r91471 * r91472;
        double r91474 = r91470 - r91473;
        return r91474;
}

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