Average Error: 0.0 → 0.0
Time: 8.2s
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 r50436 = x_re;
        double r50437 = y_re;
        double r50438 = r50436 * r50437;
        double r50439 = x_im;
        double r50440 = y_im;
        double r50441 = r50439 * r50440;
        double r50442 = r50438 - r50441;
        return r50442;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r50443 = x_re;
        double r50444 = y_re;
        double r50445 = r50443 * r50444;
        double r50446 = x_im;
        double r50447 = y_im;
        double r50448 = r50446 * r50447;
        double r50449 = r50445 - r50448;
        return r50449;
}

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