Average Error: 0.0 → 0.0
Time: 946.0ms
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 r32539 = x_re;
        double r32540 = y_re;
        double r32541 = r32539 * r32540;
        double r32542 = x_im;
        double r32543 = y_im;
        double r32544 = r32542 * r32543;
        double r32545 = r32541 - r32544;
        return r32545;
}

double f(double x_re, double x_im, double y_re, double y_im) {
        double r32546 = x_re;
        double r32547 = y_re;
        double r32548 = r32546 * r32547;
        double r32549 = x_im;
        double r32550 = y_im;
        double r32551 = r32549 * r32550;
        double r32552 = r32548 - r32551;
        return r32552;
}

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